一尘不染

我可以同时从多个线程为一个套接字调用accept()吗?

linux

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


阅读 375

收藏
2020-06-03

共1个答案

一尘不染

是的,您可以accept()从多个线程和多个进程调用同一个侦听套接字,尽管指向它的指向可能不如您想象的那么多。内核将只允许一个成功。当使用进程完成此操作时,这称为预分支,并且fork()为每个新连接节省了a的开销。但是,当您处理线程时,可以更轻松地拥有一个等待新连接队列的现有线程池。一个线程执行accept并写入队列,而工作线程读取队列并执行其操作。它更干净,这是一个很好理解的模式,您几乎一无所获。

2020-06-03