|
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!
| 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...
|
|