是否可以在套接字连接中的服务器中创建线程而不是分叉进程?

时间:2011-06-19 19:11:12

标签: c multithreading

我正在制作一个简单的程序,假设接受来自客户端的txt文件数据。 (不是很大的文件..)

我想知道,如果可以使用pthread创建线程而不是使用fork创建另一个进程。

我的计划是为我处理数据并将其存储在共享队列中的每个连接创建线程,我可以使用互斥或​​信号量来保护任何竞争条件。

2 个答案:

答案 0 :(得分:3)

是的,使用单独的线程来处理客户端连接是完全正常的。与分支新流程相比,它会更快。但是在隔离方面存在一个缺点:因为如果此进程发生故障,所有客户端都在同一进程内处理,则服务器将无法为其他客户端提供服务。

答案 1 :(得分:0)

只要你记住线程的局限性,就可以了。特别是,您将需要适当的锁定,并且您将使用相对较小的堆栈。

您可能还想考虑使用例如libevent的事件驱动架构;这可以避免锁定和堆栈大小问题,并减少上下文切换开销,但可能导致更复杂的代码。