ACE学习(三)ACE_Event与ACE_Event_Handler

本文介绍了ACE库中的ACE_Event类,它在Win32和UNIX平台上的区别,包括进程同步、事件模拟等。同时讲解了ACE_Event_Handler,它是处理I/O、定时器和信号事件的抽象接口,需要注意其在不同操作系统上的信号差异。文中还给出了两个使用ACE_Event的示例。
摘要由CSDN通过智能技术生成

ACE_Event与ACE_Event_Handler

ACE_Event


首先看下ACE中关于ACE_Event的注释:
A wrapper around the Win32 event locking mechanism. Portable implementation of an Event mechanism, which is native to Win32, but must be emulated on UNIX.  All platforms support process-scope locking support.  However, only Win32 platforms support global naming and system-scope locking support.

这个类在《ACE程序员指南-网络与系统编程的实用设计模式》中并没有介绍,这个类在使用的时候要非常注意,因为在win32和linux平台上实现和使用都有很大不同:

 

1.WIN32的EVENT是内核对象


“only Win32 platforms support global naming and system-scope locking support.”,也就说在win32平台上ACE_Event是可以做进程同步的系统范围对象,而在linux下只能是在进程范围内的对象。

 

2.不同平台下实现不同


“native to Win32, but must be emulated on UNIX”,在win32下就是原来使用的Event模型,而在linux平台下是通过某种方法模拟来实现的。——至少Linux下还模拟实现了,有些类需要用到信号机制,而win32的信号少的可怜,ACE干脆就没有模拟(用ACE_OS::kill发不出来信号),还有下面的ACE_Event_Handler,也是处理信号事件的,写出的代码可能没有可移植性。

 

3.关键接口:


a) int signal (void);
  /**
   * if MANUAL reset
   *    wakeup all waiting threads and
   *    reset event
   * else AUTO reset
   *    wakeup one waiting thread (if present) and

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值