我正在权衡如何实现基于TCP的服务器(在C中) - 服务器将接受来自客户端的连接,接收来自客户端的命令,然后发送响应。非常简单的东西 - 但命令的处理必须由系统中的另一个线程完成,这为混合引入了一点并发性。套接字send/recv的单独线程?
所以我想决定是否在一个线程中处理所有TCP通信,使用非阻塞套接字和select(),或者使用阻塞套接字和两个单独的通信线程(一个用于发送,一个用于接收) 。
我对后者的关注是处理套接字同步 - 如果我在发送线程中关闭套接字,接收线程中会发生什么(反之亦然)。以及如何处理这个并以正确的方式清理。
任何意见将不胜感激。