Ben*_*ves 5 c++ multithreading posix pthreads
是否有推荐的方法来等待多个输入.例如,我希望我的程序能够从3个来源接收输入:
监听线程条件,例如pthread_cond_wait()
从标准输入获取数据,例如getline()
听套接字例如accept()
完成此任务的最佳方法是什么?我是否需要为每个不同的输入源提供一个线程?谢谢
无需单独的线程等待accept(2)
和stdin
-用poll/select
在这里.而不是条件变量,在线程之间创建一个管道(如果我们谈论CV,你已经有了线程),在它上面等待它poll
并在事件发生时写入它.
您可以使用系统调用来侦听多个文件描述符,而无需使用多个线程select(2)
。您可以使用pthread_cond_timedwait
超时来等待条件变量,这样您就不会等待超过特定的时间。
我认为想要同时等待条件变量或某种文件描述符是非常不寻常的——如果你绝对确定这就是你想要做的,那么你将不得不使用多个线程,其中一个线程调用pthread_cond_wait
/ pthread_cond_timedwait
,另一个线程调用select
或其他一些 I/O 函数。
归档时间: |
|
查看次数: |
5522 次 |
最近记录: |