有什么办法可以让线程暂停 1-2 微秒?(注意 1 微秒 = 1/1000 毫秒)。我知道有人问过这个问题,但到目前为止还没有很好的答案。这是我的情况,为什么我需要这个:
我有一个运行多个线程来服务客户端请求的服务器。请求是由其他线程通过偶尔发生的共享内存发送的。但是,一旦发送请求,就需要尽快处理。因此,当请求在共享内存中排队时,我需要一种快速的方法来通知其中一个服务线程。
使用了 Windows 事件对象,但在我的机器上从 SetEvent() 到 WaitForSingleObject() 返回需要 6-7us(尝试设置进程/线程优先级但仍然没有太大改进)。我尝试使用一个繁忙的循环来让服务线程继续池化内存,从而将延迟降低到 1-2us,这已经足够了,但它会烧毁 CPU,而请求只像每分钟发送一次一样。如果我可以在循环中插入微/纳秒睡眠,我至少可以释放我的 CPU,同时保持低延迟。
如果有人能建议我另一种方法来进行延迟低于 2us 的线程通信,我会很高兴。谢谢