c++非阻塞多线程实例应用的算法有哪些

 我来答
huanglenzhi
2014-12-23 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517181
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  多线程非阻塞模式到现在算是告一段落吧 虽然还有一些小的bug需要修正 总结一下  准备向后面进发


  实现功能: 本程序主要实现远程计算的功能 通过非阻塞套接字和多线程的结合 让通信变得高效  服务器通过维护一个客户端链表来实现对多个客户响应  客户端自身验证表达式的正确性 当输入Byebye时 服务器回复OK  此时客户端断开连接退出

  总结:

  不管用何种方式通信  相关联的几个线程总会用一个变量来控制所有的其他线程

  对于非阻塞套接字 Recv Send Connect Accept等都需要套上一个基于共同控制变量或者永真的循环来实现对WSAEWOULDBLOCK的返回重试

  对于通过事件信号量来通知的两个线程 例如生产者 消费者(生产者生产好了通过hEvent通知消费者) 当生产者退出时 一定要通过该信号量来通知消费者 以免消费者阻塞于WaitForSingleObject  而消费者在等到信号量时  也一定要检测生产者是否已经退出(或者是说在这里的断开了连接)  以免发送或接收未知的数据

  对于有信号量控制的两个同步线程 要注意是否有共同访问的数据 要时刻记得对数据进行互斥访问

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式