找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3493|回复: 3

关于win32平台"事件同步"的一个问题

[复制链接]
发表于 2008-4-29 10:29:09 | 显示全部楼层 |阅读模式
在WINDOWS XP平台上开发服务端程序,很一部分模式是这样的,
1,建立EVENT,
2,wiatforsingleobject或 WaitForMultipleObjects等待EVENT事件,之后再处理数据
这种模式在WINDOWS平台上很普遍,可是用ACE来实现这种方法,我不知道该怎么去实现,用哪些模式,用哪些类.我在comp.soft-sys.ace (关键字WIN32 EVENT) 上搜了一下,有好多人也问这个问题都是都没有得到正面的回答,只是说要用其它的模式,用哪些模式怎么用都没有说.我又看了看书和网上的资料,发现有以下几种方案比较接近,但是效果怎样还不太清楚
1,使用ace_event类,这个类是跨平台实现了"事件",可以用ace_event:wait方法等待,但是这种方法比较"简漏"
2.条件变量,发消息.在线程之间传递状态使用条件变量,传递数据使使用发消息(消息队列)
3.REACTOR模式,register_handle方法,我看了文档,可以使用posix 平台上的信息,也可以使用WIN32 平台上的"平台对象",但是我试过了,不行,SETEVENT之后不会触发handle_signal事件,我不知道是我对"平台对象"的理解错误还是根本就不支持WIN32平台上的EVENT
我想请教各位有经验的高手,你们是怎么实现的.thank a lot!
 楼主| 发表于 2008-4-29 10:29:15 | 显示全部楼层
不是这样的啦。
对服务器端的程序开发,ACE早就有框架支持,Windows下面用异步接口类和Proactor框架,Linux用Dev_Poll_Reactor实现。

即便不用这些,服务器程序也不是这么写的。请参考本站文章。
 楼主| 发表于 2008-4-29 10:29:34 | 显示全部楼层
我这个不是网络开发,不需要收发网络数据,只是本机的多个进程间交互,多个进程对一个数据集进行操作.
 楼主| 发表于 2008-4-29 10:29:40 | 显示全部楼层
最好说的清楚些才好判断如何使用各种技术。

多个进程间交互,一般用内存映射文件,效率高。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 13:42 , Processed in 0.019578 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表