Riverace Corporation
ACE News and Tips Newsletter Helping You Make the Most of ACE
November 2005

Welcome to the November 2005 edition of Riverace's ACE News and Tips newsletter. This issue contains information about the new ACE Reactor implementation for Linux 2.6 kernels, ACE_Dev_Poll_Reactor; and news about what's coming up in the next ACE release.

In this issue
  • Featured Book: C++ Network Programming, Volume 2 (C++NPv2)
  • Introducing ACE_Dev_Poll_Reactor on Linux
  • ACE.next: What's New?
  • ACE 5.4c Fix Kit Released

  • Introducing ACE_Dev_Poll_Reactor on Linux

    Our March 2005 newsletter discussed ways to handle large numbers of network connections. Each platform has its own tricks for navigating the difficulties, but recent Linux kernels (such as in Red Hat Enterprise Linux 4) offer the epoll facility, a new and very scalable, high performance mechanism for demultiplexing I/O events across many thousands of connections simultaneously. Ossama Othman, a DOC group member, contributed the original experimental implementation of ACE_Dev_Poll_Reactor to ACE. Thanks to the sponsorship of Sharpcast, Riverace is completing the implementation of ACE_Dev_Poll_Reactor using the epoll facility on Linux. The upcoming ACE 5.4.8 beta will be the first public beta containing the completed implementation for beta testing.

    The most visible characteristics of ACE_Dev_Poll_Reactor are listed below, with notes that compare and contrast it with other ACE reactor implementations described in C++NPv2.

    • Level triggered event detection. Like the select()-based reactor implementations, ACE_Dev_Poll_Reactor detects events by their current level, or state, and not on edge transitions, like ACE_WFMO_Reactor. Although the underlying epoll facility can detect events using either method, ACE_Dev_Poll_Reactor's use of epoll chooses level triggered.
    • Event dispatching in parallel. In situations where multiple threads are running the reactor event loop, ACE_Dev_Poll_Reactor can dispatch events to the same handler simultaneously. Like ACE_WMFO_Reactor, there is no serialization of handlers during dispatch. This can greatly increase the parallelization of work, but requires more care when programming to properly serialize access to event handler state and data.
    • Implements reference counting. As with other ACE reactor implementations, ACE_Dev_Poll_Reactor implements the event handler reference counting scheme discussed in the October 2005 newsletter.

    The ACE 5.4.8 beta should be available within the next week. If you're developing for Linux and require thousands of network connections, we recommend you evaluate the use of ACE_Dev_Poll_Reactor for your project.


    ACE.next: What's New?

    The ACE development community is hard at work on the next version of ACE. Here are some of the things you can look forward to (items in bold are new or changed since last month):

    • Native library path-searching. Previous ACE versions's implementation of ACE_DLL (used in loading dynamic services) implemented a search of the configured path-search to try and locate the desired library file (DLL) and then used the full pathname to load the library. This skirted some platforms's rules for path search and security settings. This has been changed in the next ACE version to make use of all of the native platform's path-search and security facilities.
    • Improved wide-character support. Wide- character support has been included in ACE for many years on Windows (also known as Unicode builds). However, wide-character support for POSIX platforms has been sorely lacking. As ACE's reach expands, this has become a more important issue. Riverace is leading the completion of wide-character support in the next version of ACE. This support is also available now in the ACE 5.4b fix kit.
    • GNU autotools support. Riverace is the lead developer in charge of adding auto-configure support to ACE. For native-build, non-Windows systems, autoconf will very likely become the way to configure and build ACE. This will help insure that ACE uses the latest features available on each supported platform, and reduce the work required to build ACE. No more picking the right config.h or platform_macros.GNU file. Just do ./configure then make. Ahhh...
    • Support for g++ 4.0 and 3.4.
    • Support for Red Hat Enterprise Linux 4.
    • Support for Solaris 10.
    • Support for Microsoft Visual Studio 2005 on desktop, Pocket PC 2003, and Windows Mobile 5.0.
    • Support for IBM AIX 5.3 on POWER with IBM's C++ V7.
    • Support for HP-UX 11iv2 on both Itanium2 and PA-RISC.
    • Newer C++ Features Being Used. As the range of ACE-supported compilers matures and older compilers are taken out of service, ACE can make more use of newer C++ features while still maintaining its stellar portability record. For example, many methods that returned 1 or 0 as an int now return bool. Small steps, yes, but significant ones. You'll see more modern C++ usage as time goes on.
    • The ACE and ACE_OS classes, previously containing a number of static member functions, are now C++ namespaces. Similar ACE-internal classes, such as ACE_Sock_Connect, are no longer in use.
    • Completed ACE_Dev_Poll_Reactor. Sharpcast is sponsoring Riverace's work to complete this important class, enabling use of the new epoll facility on newer Linux kernels. Thanks to Sharpcast's forward-thinking investment in this important class, the entire ACE user community will benefit from the greatly increased scalability of the Reactor framework on Linux.

    As you can see, the pace of changes is slowing and the ACE development team is beginning to focus more on testing in preparation for the release of ACE 5.5. The current estimate for ACE 5.5's release is late in 2005, so there's time to get a bit more in.


    ACE 5.4c Fix Kit Released

    The ACE 5.4c Fix Kit was recently released. The 5.4 fix kit ChangeLog contains entries for all changes made.


    Featured Book: C++ Network Programming, Volume 2 (C++NPv2)

    Now in its second printing, this widely acclaimed book covers the major frameworks in ACE, how and why they're designed as they are, and examples for how to use them. This book also contains in-depth analysis of the "how and why" of the ACE Reactor framework's design and usage, including more information about the ACE_Event_Handler, discussed in this issue of the newsletter. Every serious ACE user should have this book on their desk at all times.

    Buy it now from amazon.com...
    Quick Links...

    ACE Documentation

    Latest ACE 5.3 Fix Kit

    Latest ACE 5.4 Fix Kit

    ACE Training Classes

    ACE Support Services

    Newsletter Archive

    More About Us



    Join our mailing list!
    phone: 888-384-8154


    Riverace Corporation | 10 Wampanoag Drive | Franklin | MA | 02038-1292