9

我正在使用 Linux 3.2.0、x86_64。我可以同时从多个线程为一个套接字调用 accept() 吗?

4

1 回答 1

13

是的,您可以从多个线程和多个进程调用accept()同一个侦听套接字,尽管它可能没有您想象的那么重要。内核只允许一个成功。当这通过进程完成时,它被称为预分叉,它可以节省fork()每个新连接的费用。但是当您处理线程时,您可以更轻松地拥有一个等待新连接队列的现有线程池。一个线程执行accept并写入队列,工作线程读取队列并执行其操作。它更干净,这是一个很好理解的模式,你几乎没有损失任何东西。

于 2012-07-15T00:45:36.783 回答