gpt4 book ai didi

sockets - 在套接字编程中,accept() 可以在多进程(线程)中使用同一个监听套接字吗?

转载 作者:行者123 更新时间:2023-12-02 07:52:53 24 4
gpt4 key购买 nike

  1. 在父进程中打开一个监听套接字
  2. 在 child1,child2,child3.... 中调用 epoll_wait(listening_socket)。
  3. 如果有连接请求,在每个 child 中调用accept

最佳答案

一般来说,让多个线程在同一个套接字上执行 IO 而它们之间没有某种同步并不是一个好主意。在您的场景中,您可能会看到类似以下内容:

  • 传入的连接请求唤醒所有 N 个子线程中的 epoll_wait
  • 所有 N 个线程都调用 accept,1 个调用成功,N-1 个阻塞(或者失败,如果你的监听套接字是非阻塞的)

更常用的方法是让父线程循环调用监听套接字上的accept,并为每个传入请求启动一个子线程。 (或者,如果您担心线程创建开销,您可以有一个子线程池,在空闲时等待条件变量;父线程将新接受的套接字添加到队列中并使用 pthread_cond_signal 唤醒 child 来处理它。)

关于sockets - 在套接字编程中,accept() 可以在多进程(线程)中使用同一个监听套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com