roe*_*elf 23 linux pthreads affinity
我正在尝试在Linux上设置线程的CPU亲和性.我想知道推荐以下哪种方法:
使用pthread_self()获取线程ID
通过将线程id作为参数传递,使用pthread_setaffinity_np(....)设置CPU关联
使用gettid()调用获取线程ID
通过在进程id的位置传递线程id,使用sched_setaffinity(....)设置CPU关联
PS:设置CPU亲和性后,我打算增加线程的调度优先级.
cni*_*tar 19
他们不一样.以下是我从TLPI收集的一些内容(我找不到足够大的块来完全描述这一点).如果你赶时间,你可能只想要最后一部分.
gettid
Linux 2.4引入了一个新的系统调用,gettid()
允许一个线程获取自己的线程ID.
线程组中的每个线程由唯一的线程标识符区分.使用与进程ID相同的数据类型表示线程ID pid_t
.线程ID在系统范围内是唯一的,并且内核保证没有线程ID与系统上的任何进程ID相同,除非线程是进程的线程组负责人.
pthread_self
进程中的每个线程由线程ID唯一标识.线程可以使用获取自己的ID pthread_self()
.
pthread_equal()
比较线程ID需要该函数,因为pthread_t
必须将数据类型视为不透明数据.
在Linux线程实现中,线程ID在进程间是唯一的.但是,在其他实现中并不一定如此,并且SUSv3明确指出应用程序无法移植使用线程ID来标识另一个进程中的线程.
gettid
VS pthread_self
POSIX线程ID与特定于Linux的gettid()
系统调用返回的线程ID不同.POSIX线程ID由线程实现分配和维护.返回的线程ID gettid()
是由内核分配的数字(类似于进程ID).
我会去,pthread_setaffinity_np
但请注意手册说:
这些函数在sched_setaffinity(2)之上实现
归档时间: |
|
查看次数: |
21527 次 |
最近记录: |