【发布时间】:2017-05-25 03:55:25
【问题描述】:
我有一个简单的网络服务器 fork() 并在子进程中使用 accept()。
这是伪代码:
void server_child_process(int server_socket){
// ...
while (true){
if ( ( client = accept(server_socket, addr, addrlen) ) == false ){
server_debug("Can not socket_accept()...");
}
//...
}
}
accept()似乎没有问题,不需要任何同步。
使用fork() 模型,您可以同时拥有多个accept()。来自单个随机子进程的单个连接总是被接受一次。
(例如,不接受来自两个孩子的连接)
这种模型通常被称为 pre-fork,因为理论上在初始 fork() 之后没有新的 fork() 生成。
我可以在一个线程中做同样的事情吗?
【问题讨论】:
-
是的,确实可以。
标签: c multithreading pthreads