c ++在函数中识别当前线程?

时间:2010-01-04 11:47:12

标签: c++ windows multithreading mfc

假设我有一个带静态函数的单例对象:

static int MySingletonObject::getInt()

现在我想返回一个不同的int,具体取决于哪个workthread(MFC线程)正在调用该函数。

我知道我可以在创建线程时将参数传递给threading函数。但有没有办法在没有这些参数信息的情况下识别线程?

谢谢!

4 个答案:

答案 0 :(得分:3)

你可以调用GetCurrentThreadId() - 将返回一个整数标识符 - 或者GetCurrentThread() - 将返回一个可以强制转换为整数标识符的句柄 - 来自任何线程 - 这些值对于任何线程都是唯一的在这个过程中。

答案 1 :(得分:3)

您想要的是线程本地存储。对于TLS的Windows实现,请阅读此内容:http://msdn.microsoft.com/en-us/library/ms686991%28VS.85%29.aspx

答案 2 :(得分:2)

调用GetCurrentThreadId(在Windows机器上)它将返回调用函数正在运行的上下文中的线程ID

答案 3 :(得分:0)

听起来你正在寻找线程本地存储,因为Igor建议 - 我会选择使用boost.Thread代码(documentation here),因为:

  • 跨平台/编译器
  • 通常有用且方便这类任务

    (实际上我想知道你是否真的想要创建一些类似于boost :: thread_specific_ptr的东西,根据你所说的你的需求)