Windows 线程从尚未填满的资源同步读取时CPU使用率高

Windows 线程从尚未填满的资源同步读取时CPU使用率高,windows,winapi,cpu-usage,winsockets,Windows,Winapi,Cpu Usage,Winsockets,(在win32/c++环境下工作) 我有一个函数,它调用一个固定大小的一个字节的ReadFile(同步)从SOCKET资源(属于WINSOCK)中读取。 有多个线程运行此函数。 数据从外部写入套接字,不在我的控制范围内。 每当数据尚未写入时,我会发现我的exe占用了将近80%的CPU,使用率在所提到的线程之间相对平均(通常有4个线程) 由于ReadFile是一个操作系统api,我希望它在内部异步实现,以避免类似问题。 我的问题是为什么会发生这种情况,以及我能做些什么来避免它 我已经很长时间没有进

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

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

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

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

否。它在没有超时的情况下阻塞,这对我的使用很好,但CPU资源消耗问题除外。为什么使用
ReadFile()
而不是
recv()
WSARecv()