我在MSDN看到了以下内容:
除非在异步完成期间,否则WinHTTP不可重入 打回来。也就是说,当一个线程有一个呼叫等待其中一个 WinHTTP函数,如WinHttpSendRequest,WinHttpReceiveResponse, 它是WinHttpQueryDataAvailable,WinHttpSendData或WinHttpWriteData 在第一次通话之前,不得再次拨打WinHTTP 完成。
可能发生第二次呼叫的一种情况是 如下:如果应用程序排队异步过程调用(APC) 调用WinHTTP的线程,如果WinHTTP执行 内部警报等待,APC可以运行。如果APC例程发生 还要调用WinHTTP,它重新进入WinHTTP API和内部 WinHTTP的状态可能已损坏。
这是否意味着,当一个线程正在调用WinHTTP时,“线程本身”无法再调用WinHTTP?
或者是否意味着,当一个线程调用WinHTTP时,在整个程序中不能调用任何其他WinHTTP(即使它们在其他线程中)。
有人可以解释我的MSDN提供的示例吗?如果它处于同步模式,大多数WinHTTP功能都会阻塞? APC怎么运行?
答案 0 :(得分:2)
这是否意味着,当一个线程正在调用WinHTTP时,“线程本身”无法再调用WinHTTP?
是。允许不同的线程对WinHTTP进行并发调用。