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

问题描述 投票:0回答:1

我使用的是Linux 3.2.0,x86_64。 我可以同时从多个线程为一个套接字调用

accept()
吗?

linux multithreading sockets pthreads posix
1个回答
13
投票

是的,您可以从多个线程和多个进程在同一个侦听套接字上调用

accept()
,尽管可能没有您想象的那么重要。内核只允许一个成功。当进程完成此操作时,称为预分叉,它可以节省每个新连接的
fork()
费用。但是,当您处理线程时,您可以更轻松地拥有一个等待新连接队列的现有线程池。一个线程执行
accept
操作并写入队列,工作线程读取队列并执行其操作。它更干净,这是一种易于理解的模式,而且您几乎不会丢失任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.