[問題] 請問是否可以強制多執行緒共用一個cpu

看板LinuxDev作者 (沒有存在感的人)時間8年前 (2016/10/20 21:41), 8年前編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/2 (看更多)
正在構思一個程式,load其實不是很重,但是有3-4個thread必須輪流對單一device存取 但是想做到lock-free+節省load+空出其他core做其他的事, 所以希望把該程式生出的所有的thread都集中在單一個core跑。 raspberry pi的case簡單(本來就是single core),可是想在rp3上也這樣做。 請問有在user space(pthread)實作的方法嗎? 我在 http://fred-zone.blogspot.fr/2007/10/cpu.html 看到一個例子: int main(void) { cpu_set_t cmask; unsigned long len = sizeof(cmask); __CPU_ZERO(&cmask); /* 初始化 cmask */ __CPU_SET(0, &cmask); /* 指定第一個處理器 */ /* 設定自己由指定的處理器執行 */ if (!sched_setaffinity(0, len, &cmask)) { printf("Could not set cpu affinity for current process.\n"); exit(1); } return 0; } 請問在sched_setaffinity(0, len, &cmask) 之後,不管該程式分出多少thread 都會只在cpu 0 執行嗎? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 86.209.148.33 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1476970891.A.DEF.html ※ 編輯: wtchen (86.209.148.33), 10/20/2016 21:57:09

10/20 23:31, , 1F
印象中要設定繼承的屬性
10/20 23:31, 1F

10/20 23:33, , 2F
search PTHREAD_INHERIT_SCHED 看是否有用~~
10/20 23:33, 2F

10/20 23:35, , 3F
感謝~~
10/20 23:35, 3F

10/20 23:38, , 4F
我只有試過sched policy. cpu mask若有用在回一下吧
10/20 23:38, 4F

10/21 00:15, , 5F
請問要怎麼看哪顆CPU跑哪個process?
10/21 00:15, 5F

10/21 01:20, , 6F
taskset 試試?
10/21 01:20, 6F

10/21 02:23, , 7F
懂了,感謝!
10/21 02:23, 7F
※ 編輯: wtchen (86.209.148.33), 10/23/2016 17:53:55
文章代碼(AID): #1O2CcBtl (LinuxDev)
文章代碼(AID): #1O2CcBtl (LinuxDev)