mis*_*yes 3 c linux multithreading multiprocessing
根据我的理解,TID返回的(thread id)gettid()在一个进程内(或者在多个进程的程序内,而每个进程可能有多个线程)是唯一的,即在一个进程内,不同的线程有不同的线程id。
返回TID的值pthread_self()在进程间是唯一的,即在同一台机器上,不同线程TID同时在同一台机器上有不同的。
我的理解正确与否?
另外,线程如何获得其派生线程的TID(对应于gettid())?谢谢!
为了解决这个问题,在 Linux 上提供一些实现背景:
gettid() 返回一个与内核进程调度程序中的线程条目相对应的值(与 getpid() 的感知非常相似)。这是可以设置调度优先级和亲和力的东西。
pthread_self() 返回一个指向进程内存映射中调用线程的 TLS(线程本地存储)槽附近的指针。显然,根据 TLS 的定义,该值在给定进程内是唯一的(并且可以映射到内核 TID 并映射回来),但它不可能在系统范围内是唯一的,因为每个进程都具有相同的虚拟地址范围。
| 归档时间: |
|
| 查看次数: |
6352 次 |
| 最近记录: |