我从MSDN看到了以下内容:
winhttp不可重入,除非在异步完成期间
回调。也就是说,当线程有一个挂起的调用
WinHttp函数,如WinHttpSendRequest、WinHttpReceiverResponse,
WinHttpQueryDataAvailable、WinHttpSendData或WinHttpWriteData,它
在第一次调用之前,不得再次调用winhttp
完整的。
第二次调用可能发生的一种情况是
如下:如果应用程序将异步过程调用(APC)排队
调用winhttp的线程,如果winhttp执行
警报等待内部,APC可以运行。如果APC程序发生
同样要调用winhttp,它会重新输入winhttp api和内部
WinHTTP的状态可能已损坏。
这是否意味着,当线程调用winhttp时,“线程本身”不能再调用winhttp?
或者这是否意味着,当一个线程正在调用winhttp时,整个程序中不能调用任何其他winhttp(即使它们在其他线程中也是如此)?
有人能解释一下我的MSDN提供的例子吗?如果它处于同步模式,大多数winhttp函数都被阻塞了?APC如何运行?
最佳答案
这是否意味着,当线程调用winhttp时,“线程本身”不能再调用winhttp?
对。允许不同的线程对winhttp进行并发调用。