我正在用线程做一些练习。在一个这样的练习中,函数应该根据线程 ID 具有不同的操作。我得到的结果好像我所有的线程都具有 id 的偶数。
我使用另一个变量分别进行了测试,我给了它偶数和奇数,它工作得很好......
我正在使用 int x=pthread_self()
获取线程 ID。我做错了吗?
最佳答案
pthread_self()
返回的 pthread_t
类型根本不能保证是一个数字(算术类型)——例如它可能是一个结构。
即使是数字,也完全有可能永远是偶数。事实上,是使用 pthreads 的 glibc
实现的情况,其中 pthread_t
是线程的基本堆栈地址 - 因为堆栈是总是页面对齐,它们不仅是偶数,实际上它们总是可以被 4096 整除。
如果您想让线程根据其线程 ID 执行不同的操作,您最好自己将自己的顺序数字线程 ID 分配给线程。
关于linux - 是否可以只有id为偶数的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327655/