Riverace Corporation
Riverace's ACE News and Tips Newsletter   Helping You Make the Most of ACE
March 2007

Welcome to the March 2007 edition of Riverace's ACE News and Tips newsletter. This issue contains an advance look at some of the things coming in ACE 5.6 later this spring as well as information on our upcoming ACE training class.

If, after reading this issue, you'd like to get some new feature into ACE, please let us know! Also be sure to forward this note to other people you work with to be sure they get their input registered as well!

In this issue
  • Featured Book: C++ Network Programming, Volume 2 (C++NPv2)
  • What's Coming in ACE 5.6? (part 2)
  • Upcoming "How to Use ACE Effectively" Class: May 1-4, 2007

  • What's Coming in ACE 5.6? (part 2)

    Last month's newsletter began a look at what's coming in the next ACE release. We referred to that as ACE 6.0; however, after the newsletter was issued, the ACE release number was changed from 6.0 to 5.6. Why? (No, the ACE crew didn't have a "Vista moment") Two other products being developed by the Vanderbilt University DOC group, TAO 2.0 and CIAO 1.0, are tied to the ACE 6.0 release, and CIAO 1.0 won't be ready in the planned release timeframe. However, since there's plenty that's been changed and improved in ACE since the 5.5 release, there will be a release - it will just be called ACE 5.6 instead of ACE 6.0. Our apologies for the confusion. Please feel free to contact us with any questions or concerns about the next release or its contents.

    So with that correction, let's continue our look at what's coming in ACE 5.6. Again, we note that all user-visible changes to ACE are described in the ACE_wrappers/NEWS file of each ACE beta as development progresses. You can review that file here.

    In this issue, we'll look at a change to the ACE_Event_Handler destructor's behavior with respect to purging queued reactor notifications. C++NPv2 section 3.5 describes the need for purging reactor notifications released to an ACE_Event_Handler and states that the ACE_Event_Handler destructor calls ACE_Reactor::purge_pending_notifications() in order to prevent a reactor from dispatching a notification to an event handler that's been destroyed. This appeared to be a good idea when first conceived; however, in practice, it can cause undefined behavior because calling purge_pending_notifications() from the ACE_Event_Handler destructor is likely to invoke undefined or illegal operations on an object being destroyed. Therefore, the ACE_Event_Handler destructor will no longer call ACE_Reactor::purge_pending_notifications().

    What practical affects does this change have on your applications? With this change, there is effectively one additional rule for ACE Reactor framework programming:

    • You shall not delete an ACE_Event_Handler if there are pending notifications on that handler
    Applications that need help following this rule should consider using reference counting for event handlers. When the last notification is delivered (or purged) the event handler would be automatically deleted. The October 2005 issue of this newsletter described the event handler reference counting facility. You're encouraged to review that article in preparation for making any needed adjustments in your applications. Riverace customers can call to discuss any issues or questions with this upcoming change to ACE.

    If you want to experiment with this upcoming change before ACE 5.6 is released, grab a copy of the latest ACE beta and try it out! If you get stuck or have questions, our new Whitewater Level of ACE support can help you get going quickly.

    Upcoming "How to Use ACE Effectively" Class: May 1-4, 2007

    "When do I need to initialize ACE? And how would I do that? Why is Windows such a special case?"

    If you watch the ace-users mailing list, you've surely seen questions like this. At our upcoming How to Use ACE Effectively class, scheduled for May 1-4, 2007 in Waltham, MA (in the Boston area), you'll learn the answers to these and many more questions you may have about ACE. This 4-day class is priced at US$1,500 including continental breakfast, snacks and lunch each day. Each attendee receives a copy of the class slides and a copy of The ACE Programmer's Guide (one of the authors, Steve Huston, will be teaching the class and would be happy to sign anyone's book).

    For more information and to sign up, please click on the "May 1-4, 2007 Signup" link at http://www.riverace.com/training.htm. Don't miss out on this! You'll also find a PDF file for multiple enrollments and for payment other than by credit card. That form is also available here: http://www.riverace.com/classreg_may_2007.pdf.

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

    Now in its fifth printing, C++NPv2 covers the design and usage of ACE's most commonly used frameworks for networked application development, including the Reactor, Service Configurator, Task, Acceptor-Connector, Proactor, and Streams frameworks.

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

    ACE Documentation

    ACE 5.4 Series Fix Kits

    ACE 5.5 Series Fix Kits

    ACE Training Classes

    ACE Support Services

    Newsletter Archive

    More About Us

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