gpt4 book ai didi

c++ - 将两个线程设置为相同的 cpu 关联 pthread_getaffinity_np

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:29 30 4
gpt4 key购买 nike

    cpu_set_t cpuset;
CPU_ZERO(&cpuset);
std::cout << "current cpu: " << sched_getcpu() << std::endl;
CPU_SET(sched_getcpu(), &cpuset);
if (pthread_setaffinity_np(std_thread.getNativeHandle(), sizeof(cpu_set_t), &cpuset) == 0) {
std::cout << "Afinity ok!!!" << std::endl;
} else {
std::cout << "second thread set affinity failed." << std::endl;
}

基本上我试图让主线程 (main()) 和新创建的线程 (std_thread) 在同一个 cpu 中运行。代码打印出“Afinity ok!!!”但是当我检查两个线程在 htop 工具中使用的是哪个 cpu 时,它们一直随机变化,这意味着代码失败。

最佳答案

如果没有硬性理由在代码中执行此操作,那么您可以使用 taskset 命令,并且可以在创建进程时以及在运行时期间完成

如果你想在特定的 CPU 中启动进程,请给出数字

taskset -c <CPUNumber> ProgramName

或者您可以使用 PID 动态更改

taskset -cp <CPUNumber> PID

关于c++ - 将两个线程设置为相同的 cpu 关联 pthread_getaffinity_np,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855582/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com