sched_set_affinity后线程绑定的CPU随机变化正常吗?

问题描述 投票:0回答:0

Android,我创建了8个线程并将它们绑定到8个不同的CPU核心。 绑定成功。但是线程运行一段时间后,CPU affinity好像失效了。绑定到线程的 CPU 随机更改。 这是正常现象还是错误?

cpu affinity设置代码是这样的:

for (int i=0; i<8; ++i){
    mWorkers.push_back([i]()  {
            cpu_set_t cpuset;
            CPU_ZERO(&cpuset);
            CPU_SET(i, &cpuset);
            pid_t tid = pthread_gettid_np(mWorkers[i-1].native_handle());
            int rc = sched_setaffinity(tid, sizeof(cpu_set_t), &cpuset);
            std::this_thread::sleep_for(std::chrono::milliseconds(20));
            while (!mStop) {
                // some code ..
            }
        } );
}
android c++ multithreading affinity
© www.soinside.com 2019 - 2024. All rights reserved.