WinHttp:可以并行使用吗?

时间:2015-09-19 14:56:09

标签: windows multithreading winapi

我在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怎么运行?

1 个答案:

答案 0 :(得分:2)

  

这是否意味着,当一个线程正在调用WinHTTP时,“线程本身”无法再调用WinHTTP?

是。允许不同的线程对WinHTTP进行并发调用。