linux - 是否可以只有id为偶数的线程?

标签 linux multithreading pthreads

我正在用线程做一些练习。在一个这样的练习中,函数应该根据线程 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/

相关文章:

linux - 如何在 linux 中查看 Hive orc 文件的内容

linux - 如何避免使用 gs 输出合并的 pdf 文件的收缩?

java - 如果 fragment 超出堆栈,getActivity() 会发生什么情况?

c - OpenBSD 和 Linux 上 pthread_cond_wait 的不同行为

c++ - 我的函数是线程安全的和可重入的吗?

linux - 下载webrtc源代码的正确方法是什么?

c++ - Ubuntu 20.04 中未找到 io.h CLion

C++:一个对象既可以存储也可以不存储吗?

java - 可以将 main() 转换为守护线程

c - posix 互斥锁没有按预期工作