怎么取得线程的ID(GetCurrentThread返回的是同一个值)

pgmsoul 2009-12-15 12:20:01
需要这样一个函数CreateObject,一个线程第一次调用,生成一个对象,以后的调用返回第一次生成的值。其它线程调用,再生成一个对象。。。。

如果使用GetCurrentThread来判断调用的是哪一个线程,其实返回的都是同一个值,虽然这个值代表不同的线程,但是无法判断是不是新线程的调用。
...全文
523 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pgmsoul 2009-12-18
  • 打赏
  • 举报
回复
7#说要有线程本地存储,于是就有了线程本地存储。
pgmsoul 2009-12-16
  • 打赏
  • 举报
回复
线程不是你自己生成,随机生成,怎么存储?你写这个函数的时候,并不知道它应用的场合,难道让所有调用它的函数传一个线程句柄进来,而且获取当前线程的句柄本身就很费事。
Conry 2009-12-16
  • 打赏
  • 举报
回复
用线程本地存储
aa3000 2009-12-16
  • 打赏
  • 举报
回复
2楼方法没什么大问题,只不过效率不高而已,5楼的有什么好方法?

用 hash table 会快些
pgmsoul 2009-12-16
  • 打赏
  • 举报
回复
问题是除非是你自己生成的线程,获取线程的句柄并不那么简单,一个线程可以有多个句柄,他们都代表同一线程,而从数值上,不同线程里同一句柄可以代表不同的线程。而且像2#那种做法,是所有方法里最笨的。
哈利路亚1874 2009-12-16
  • 打赏
  • 举报
回复
根据句柄就可以查看是不是同一线程了
pgmsoul 2009-12-15
  • 打赏
  • 举报
回复
有个GetCurrentThreadId函数,呵呵。
zyq5945 2009-12-15
  • 打赏
  • 举报
回复
自己加个全局的DWORD数组保存线程ID,先遍历一遍看是否有这个线程ID,没有的话就是新建的,当然线程退出了也要记得把数组中的标志删除掉.
pgmsoul 2009-12-15
  • 打赏
  • 举报
回复
再调用一次GetThreadId不知道可不可以。这个ID是不是可以用来判断。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧