我正在研究一个非常时间敏感的应用程序,该应用程序在检测到发生了更改时轮询共享内存区域.变化很少,但我需要尽量减少从变更到行动的时间.鉴于变化的频率很低,我认为CPU缓存变冷了.有没有办法为我的轮询线程保留一个核心,以便它不必与其他线程竞争缓存或CPU?
例如,一个进程正在以阻塞模式侦听某个端口,因此如果 I/O 未准备好,该进程将被阻塞。
while (true)
{
msg = recv(port, BLOCKING_FLAG); // blocks here
cout<<msg<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我们也知道我们可以让一个进程休眠: sleep(1000)。
我的问题是:如果这样的进程是阻塞的,我可以说该进程被挂起吗?该进程是否会从 CPU 中换出?相同的问题sleep。