我正在使用WinHTTP来创建客户端http请求。 虽然它在大多数时候都很好用,但我有 关于线程池Windows的一些混乱 打开async winhttp连接。
正如MSDN中关于WinHttpSetOption
函数:
WINHTTP_OPTION_WORKER_THREAD_COUNT
Sets an unsigned long integer value that specifies the number of worker threads the thread pool should use for asynchronous
完井。此选项的默认值为零,指定 工作线程数等于CPU数 系统。此选项只能在NULL HINTERNET句柄上设置 在发生异步操作之前。此选项只能是 设置一次。
Windows Server 2008 R2 and Windows 7: This flag is obsolete.
所以,假设我要发出100个异步请求 -
在我的Visual Studio调试工具中,我可以清楚地看到它
我的应用程序打开100个后台线程(!)。
这根本不可扩展。因为我的目标是2008年及以上的Windows 7 / Windows服务器,
我无法使用WinHttpSetOption
选项致电WINHTTP_OPTION_WORKER_THREAD_COUNT
。
所以我的问题是 - 这有什么解决方法吗? 我想保持线程数尽可能低 同时能够异步发出许多http请求。