MyException - 我的异常网
当前位置:我的异常网» C++ » 用线程实现事件机制的有关问题

用线程实现事件机制的有关问题

www.MyException.Cn  网友分享于:2013-03-02  浏览:15次
用线程实现事件机制的问题?
具体描述如下,希望能将这个问题说清楚:

条件:进程A是主程序,和进程B在同一台机器,A和B通过共享内存实现进程通信;进程C属于远程,B和C通过socket通信组成一套监控程序的Server/Client, B能根据C的请求发送相应的信息给C(响应事件)。
( A ---> B <-----> C )

流程:进程A只负责向进程B源源不断地发送相关的信息(比如各个房间里的聊天信息);B根据C的请求发送给C相应的内容,比如C发送给B一个房间ID,然后B就把主程序(即A)发送给B的所有这个房间ID里面的信息发送给C;

我的实现:因为B要保证能够接收A源源不断发给它的信息,所以我直接开了一个thread来无限循环地接收(当然,会让它sleep一会儿);然后B和C之间:因为B一旦接收到C的请求后也要源源不断地将特定的信息发送给C,所以我也是直接又开了一个thread来无限循环发送。

我的问题:按上面的实现问题就来了:C开始发送一个房间ID给B,B用一个线程处理,不过到后面B根据C的请求向C发送另一个房间的信息的话(响应另一一个事件)必须终止之前的发送循环。因为要考虑移植性,所以大部分代码都基于boost库,win32 API也就没辙了,但是boost 的线程库在这方面提供的接口实在太少,没有通过一个线程去结束另一个线程或者给线程构造函数提供CREATE_SUSPEND之类的选项。


向大家请教一下这个问题的解决方法,是取消线程处理选用另外的机制?还是其他更好的方法?Thanks!

之所以把我的实现也贴出来,是想高手们发现这个方法不行的话能不吝赐教!



------解决方案--------------------


B1 <-----> C1 
A ---> B2 <-----> C2
.
B3 <-----> C3
数据中心

你为每一个客户端起一个线程B处理,

做个共享的数据中心: B1在和c1通信,此时,c1要把信息发给c2; 
那么B1和c1中断,同时把想要发送给c2的信息指令存到你建的数据中心
B一直监听"共享数据中心的",如果有数据,则取出,判断是否发给哪个客户端,即目前的c2

注:数据共享可以,但是线程while+sleep无限监听不提倡,建议用消息队列。

文章评论

初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员必看的十大电影
程序员必看的十大电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
每天工作4小时的程序员
每天工作4小时的程序员
如何成为一名黑客
如何成为一名黑客
漫画:程序员的工作
漫画:程序员的工作
Java程序员必看电影
Java程序员必看电影
老程序员的下场
老程序员的下场
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
鲜为人知的编程真相
鲜为人知的编程真相
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
一个程序员的时间管理
一个程序员的时间管理
代码女神横空出世
代码女神横空出世
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
编程语言是女人
编程语言是女人
旅行,写作,编程
旅行,写作,编程
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
 程序员的样子
程序员的样子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
我的丈夫是个程序员
我的丈夫是个程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
那些争议最大的编程观点
那些争议最大的编程观点
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为什么程序员都是夜猫子
为什么程序员都是夜猫子
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员的鄙视链
程序员的鄙视链
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员和编码员之间的区别
程序员和编码员之间的区别
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有