我发现问题如下: 我有一个long int表示一个tid,稍后我通过一个简单的检查检查这是否与使用pthread_self()的当前tid相同:
if(my_cachedTID == pthread_self())
printf("TIDs match");
else
printf("TIDs don't match %u : %u ", mycachedTID , pthread_self());
有时,我得到输出为" TID不匹配123456:123456" 这里123456就是例如。我的意思是它说Don不匹配,即使它们实际上是相同的值,并且相同的代码大部分时间都在工作,但有时却没有。它说TID不匹配的情况我添加了以下代码
long int diff = my_cachedTID - (long int) pthread_self();
printf("%u",diff); //prints 0 , which is correct..
我只是无法弄清楚..为什么==在为两者打印相同的值时失败,在打印时差异为0。 任何指针都赞赏。