0

这是用 VC++ 编写的 Windows 服务器应用程序。我将使用线程池来处理到达服务器的各种请求对象。显然,当一个线程处理特定请求并将其响应写入套接字时,其他线程必须等待它完成。我担心这可能不是使用线程池的有效方法。

因此我的问题是:如果线程池中的线程正在等待线程同步对象被释放,那么使用线程池将不是有效的方法。我们有什么办法可以避免这种情况吗?(可能,在分配线程之前提前知道对象是否空闲)

4

1 回答 1

1

您可以只有一个线程将内容写入套接字。其他线程将它们的数据放入队列中,输出线程从队列中读取数据并将数据写入套接字。

当然,假设线程不需要等待来自套接字的响应即可继续。

此外,这实际上取决于您希望线程在套接字上等待的频率和时间。如果它只是偶尔发生,那么没有问题。线程将以最大速率进行处理,并且很少会在发送之前必须等待另一个线程完成发送。但是如果线程花费大量时间等待套接字,那么您可能想找到另一种方法来做事。带有处理套接字的专用线程的输出队列工作得很好,而且很容易设置。

于 2013-08-10T02:07:03.000 回答