多线程通信服务器的实现
我再做一个服务器,TCP协议,异步Socket.
由于每个线程只能支持64个Socket,我必须实现多线程。由于一个服务器端的任务可能会有多个Socket,无法保证这些Socket在同一个线程中,因而会有同步问题。
比较麻烦的是,一个任务可能会删除、暂停其他任务,任务也可能删除自身使用的其他的Socket,而其他的任务或Socket可能会同时执行因而会出现死锁。
比如任务A从客户1接收数据,放入缓冲区,任务B从缓冲区中取数据,传给客户2。如哦任何一个客户崩溃了,AB两个任务都要中止。如果两个客户同时崩溃,并且AB从不同的线程执行,AB都要尝试删除对方,因为AB都已经被锁定,所以会一直等待下去。
那位能帮我想一个好点的模型,避免这种情况出现。
肯定不可以锁定所有的任务,效率太低。
谢谢