0
我正在使用sched_setaffinity
將線程固定到特定的CPU內核。如何在使用sched_setaffinity固定到核心後解鎖一個線程?
void setCpuAffinity(int id) {
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(id, &cpuset);
assert(sched_setaffinity(0, sizeof(cpuset), &cpuset) == 0);
}
不幸的是,我無法找到相應的功能,以釘住從任何給定的核心線程,並允許內核調度上的任何核心線程。
如何反轉CPU鎖定的效果並允許線程再次自由移動?
我知道,一個黑客是使用CPU_OR
和每一個CPU ID添加到允許設定,但我正在尋找能恢復線程的狀態的狀態不太哈克方法之前sched_setaffinity
是有史以來叫。
'sched_setaffinity'似乎設置了掩碼,而不是選擇CPU。設置最寬容的面具? – phs
@phs,這將是我在問題底部描述的黑客行爲。似乎沒有一個乾淨的方式來說「最寬容的面具」。 – merlin2011
啊,就這樣。爲什麼不在調用'sched_setaffinity'之前獲取現有的掩碼呢? – phs