zoukankan      html  css  js  c++  java
  • 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中的某个线程的绑定核。

    补充一点,在linux中,线程是在原进程中clone出来的新进程中运行的,和原进程共享内存。所以这也是线程有进程ID的原因。

  • 相关阅读:
    Java hibernate 遇到的问题:could not read a hi value
    Java 小知识
    Java 在使用@Select遇到的问题:拼接字符串将数组拼为了字符串
    飞逝的光阴
    终于回来了
    再说创客
    离开一段时间
    抛弃QP
    关于创客
    对DTU系统结构的重新思考
  • 原文地址:https://www.cnblogs.com/scaugsh/p/10193436.html
Copyright © 2011-2022 走看看