我有一个使用 C++ 的服务器,它使用 UNIX 套接字,当前阻塞来自单个客户端的 read() 调用。我希望能够扩展服务器,以便我可以将一些数据写入套接字,同时仍然能够从套接字读取数据?像 Boost.Thread 这样的线程库是完成此任务的最佳方法,还是有其他更容易/更有效的方法?
最佳答案
您有很多选择。至少四个:
- 使用选择(/poll/epoll/kqueue)
- 使用单独的线程进行读/写(pthreads/Boost.Thread)
- 使用asio
- 使用异步IO(例如libaio)
最简单的就是你所知道的 :)。所以对我来说 asio 将是一场噩梦,而 epoll
将是小菜一碟。您的里程可能会有所不同。
就效率而言,select
的特定实现替代品很难胜过。
关于c++ - 使用 UNIX 套接字,如何在能够发送数据的同时等待数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473391/