sched_getaffinity和pthread_getaffinity_np的区别

Posted scaugsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sched_getaffinity和pthread_getaffinity_np的区别相关的知识,希望对你有一定的参考价值。

sched_getaffinity和pthread_getaffinity_np都是绑核的函数,网上都说sched_getaffinity是用来绑定进程的,pthread_getaffinity_np是用来绑定线程的。但是我们知道,绑定进程从本质上来讲,也是绑定线程,那这两个有什么区别呢?

可以发现,这两个方法传入的第一个参数是不一样的,sched_getaffinity传入的是进程ID,pthread_getaffinity_np传入的是线程ID。也就是说,一个线程会有两个ID,一个叫进程ID,一个叫线程ID,进程ID在内核中是独立的,由内核维护,线程ID在进程中是独立的,由进程维护。进程ID在不同进程间是有效的,这意味着你可以在进程中修改其他进程的属性,而线程ID无法在不同进程间共享。所以这两个函数最大的区别是,你可以在进程a调用sched_getaffinity修改掉进程b中的某个线程的绑定核。

以上是关于sched_getaffinity和pthread_getaffinity_np的区别的主要内容,如果未能解决你的问题,请参考以下文章

os.sched_getaffinity(0) 与 os.cpu_count()

pthread_cond_wait的等待和激发

pthread优先级和pthread策略有啥关系?

pthread_key_t和pthread_key_create()详解

pthread_join 和 pthread_mutex_lock 有啥区别?

windows 下有没有类似linux中的pthread_detach,pthread_join和pthread_joinable函数