登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

得到主线程ID  

2011-02-10 14:30:20|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    多线程应用中通常需要判断当前是否处于主线程中。通过判断当前线程ID是否和主线程ID相等即可实现该功能。
#include <Windows.h>
#include <tlhelp32.h>

DWORD GetMainThreadId(DWORD processId = 0)
{
if(processId == 0)
processId = GetCurrentProcessId();

DWORD threadId = 0;
THREADENTRY32 te32 = { sizeof(te32) };
HANDLE threadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if(Thread32First(threadSnap, &te32))
{
do
{
if( processId == te32.th32OwnerProcessID )
{
threadId = te32.th32ThreadID;
break;
}
}while(Thread32Next(threadSnap, &te32));
}
return threadId;
}

bool IsMainThread()
{
return GetCurrentThreadId() == GetMainThreadId();
}
    如果利用线程本地存储(Thread Local Storage, TLS),还可通过防止重复请求线程ID加速一下下。

参考:
  评论这张
 
阅读(6309)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018