diff options
author | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-23 16:32:53 +0000 |
---|---|---|
committer | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-23 16:32:53 +0000 |
commit | 35051f07c407b4e462960a0c86b97605f0ac3bbb (patch) | |
tree | bdb4b7f4e503624246e996ea385f9b44505da6e2 /ace | |
parent | 2835e64a2c8fd0571f53747841a4561b4af3a8f9 (diff) | |
download | ATCD-35051f07c407b4e462960a0c86b97605f0ac3bbb.tar.gz |
Enhanced the semantics of the <end_event_loop>, so that when it is
called, it wakes up all the threads blocked on waiting for completions
and end the event loop.
Diffstat (limited to 'ace')
-rw-r--r-- | ace/Proactor.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ace/Proactor.h b/ace/Proactor.h index 4f3904f43e4..7c08bfac14b 100644 --- a/ace/Proactor.h +++ b/ace/Proactor.h @@ -177,7 +177,9 @@ public: static int end_event_loop (void); // Instruct the <ACE_Proactor::instance> to terminate its event - // loop. + // loop. + // This method wakes up all the threads blocked on waiting for + // completions and end the event loop. static int event_loop_done (void); // Report if the <ACE_Proactor::instance> event loop is finished. @@ -382,6 +384,12 @@ public: // largest signal number from the signal mask of the Proactor. protected: + + static int post_wakeup_completions (int how_many); + // Post <how_many> completions to the completion port so that all + // threads can wake up. This is used in conjunction with the + // <run_event_loop>. + virtual void implementation (ACE_Proactor_Impl *implementation); // Set the implementation class. @@ -414,6 +422,9 @@ protected: static sig_atomic_t end_event_loop_; // Terminate the proactor event loop. + static sig_atomic_t event_loop_thread_count_; + // Number of threads in the event loop. + private: ACE_Proactor (const ACE_Proactor &); ACE_Proactor &operator= (const ACE_Proactor &); |