0
在RW documentation中,建议使用rwThreadHash来获取用于调试的threadId,但仍然与线程上的实际Linux线程ID不匹配。任何想法如何得到它(不一定以便携的方式)?如何从RWThreadId获取Linux线程ID?
cout << rwThreadHash(threadId()) << endl;
1477159840
在RW documentation中,建议使用rwThreadHash来获取用于调试的threadId,但仍然与线程上的实际Linux线程ID不匹配。任何想法如何得到它(不一定以便携的方式)?如何从RWThreadId获取Linux线程ID?
cout << rwThreadHash(threadId()) << endl;
1477159840
我认为你正在寻找gettid()
从pthread_self() man page说明:由pthread_self()
返回的线程ID是不一样的东西通过调用返回gettid(2)内核线程ID。你打印的东西看起来像一个pthread ID。
我知道我可以使用pthread调用来获取* current * tid,但问题是我实际上使用的库是返回它管理的线程的RWThreadId,我无法访问,所以这就是为什么我试图从一种类型的线程ID转换为基于Linux的普通Linux。 – naumcho
pthread id和内核线程ID是两个不同的实体。您似乎可以访问前者,但希望访问后者。据推测RogueWave为您提供了一些方法来指定将在线程中运行的函数/方法。您需要在该方法中放置gettid()以返回内核标识或至少将其显示在日志中。如果你在说线程正在运行一些你不能改变的库代码,那么你可能确实是SOL。 – Duck