c++非阻塞多线程实例应用的算法有哪些
2014-12-23 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517181
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
多线程非阻塞模式到现在算是告一段落吧 虽然还有一些小的bug需要修正 总结一下 准备向后面进发
实现功能: 本程序主要实现远程计算的功能 通过非阻塞套接字和多线程的结合 让通信变得高效 服务器通过维护一个客户端链表来实现对多个客户响应 客户端自身验证表达式的正确性 当输入Byebye时 服务器回复OK 此时客户端断开连接退出
总结:
不管用何种方式通信 相关联的几个线程总会用一个变量来控制所有的其他线程
对于非阻塞套接字 Recv Send Connect Accept等都需要套上一个基于共同控制变量或者永真的循环来实现对WSAEWOULDBLOCK的返回重试
对于通过事件信号量来通知的两个线程 例如生产者 消费者(生产者生产好了通过hEvent通知消费者) 当生产者退出时 一定要通过该信号量来通知消费者 以免消费者阻塞于WaitForSingleObject 而消费者在等到信号量时 也一定要检测生产者是否已经退出(或者是说在这里的断开了连接) 以免发送或接收未知的数据
对于有信号量控制的两个同步线程 要注意是否有共同访问的数据 要时刻记得对数据进行互斥访问
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询