fooofei / cpp.notes

1 stars 0 forks source link

na #22

Closed fooofei closed 5 years ago

fooofei commented 6 years ago

线程亲和性 进程亲和性 都有

线程: int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize, const cpu_set_t cpuset); int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, cpu_set_t cpuset);

int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t mask); int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t mask); taskset 命令行

fooofei commented 6 years ago

一个设想: 2 个线程,操作 1 个全局变量,如果设置 2 个线程的亲和性都到一个 CPU 上,是不是用不到加锁了?

fooofei commented 6 years ago

这有一份示例代码 https://gist.github.com/isayme/4222072

问题 1 线程函数的参数是局部变量地址,即 &i,这个会在多个线程间共享,需要被保护。

问题 2 sched_setaffinity() 与 pthread_setaffinity_np() API 区别