从尚未填充的资源中同步读取的线程的高 CPU 使用率



(在win32/c++环境中工作)

我有一个函数,可以调用ReadFile(同步)一个字节的固定大小,以从SOCKET资源(WINSOCK)中读取。有多个线程运行此函数。数据从外部写入套接字,不在我的控制范围内。每当数据尚未写入时,我发现我的exe消耗了近 80% 的 CPU,并且在提到的线程(通常有 4 个)之间相对平均地分配了使用量。

由于ReadFile是一个操作系统 API,我本来希望它在内部异步实现以避免此类问题。我的问题是为什么会发生这种情况,我能做些什么来避免它。

自从我进行 Win32 编程以来已经有很长时间了,但我似乎记得当没有数据可以从套接字读取时,ReadFile 会返回错误。它可能返回 0 字节读取或其他内容。

相关内容

最新更新