summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-05-23 16:32:53 +0000
committeralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-05-23 16:32:53 +0000
commit35051f07c407b4e462960a0c86b97605f0ac3bbb (patch)
treebdb4b7f4e503624246e996ea385f9b44505da6e2
parent2835e64a2c8fd0571f53747841a4561b4af3a8f9 (diff)
downloadATCD-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.
-rw-r--r--ace/Proactor.h13
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 &);