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