gpt4 book ai didi

c++ - 有没有办法让核心忙等待?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:55 26 4
gpt4 key购买 nike

我必须让一个特定的核心忙等待。

例如,cpu中有4个核(core_1,core_2,core_3,core_4),我需要让core_2忙等待t纳秒,同时其他核还在处理它们没有忙等待的任务。

那么,有什么办法可以做到这一点吗?

CPU 的型号名称Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz

最佳答案

此代码会将您当前的线程绑定(bind)到特定的核心。直到线程结束或您调用类似的东西。

这仅在您的操作系统允许的情况下

它在这里使用 4.9.11-1-ARCHIntel(R) Core(TM) i5-3320M CPU

另见 pthread_setaffinity_np

#include <pthread.h>
#include <iostream>

#define handle_error(msg) \
do { std::cerr << msg << std::endl; exit(-1); } while (0)

void bindToSingleCore(int core)
{
pthread_t thread = pthread_self();
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(core, &cpuset);

//bind this thread to one core
int s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
if (s != 0)
{
handle_error("Cannot write cpuset");
}
}

int main()
{
bindToSingleCore(1); //replace with your core
//(0==first core, 1==second, ...)

unsigned int j;
for(unsigned int i=0; i<-1; i++)
{
j+=i;
//usleep(100); //when uncommented core is not at 100% anymore..
}
}

像这样编译和运行:

g++ prog.cpp -pthread && ./a.out

打开您最喜欢的进程 - 监控并观察您的核心。它应该处于 100% 负载。

关于c++ - 有没有办法让核心忙等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42533069/

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