summaryrefslogtreecommitdiff
path: root/ACE/ace/Dev_Poll_Reactor.inl
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2010-03-26 14:13:07 +0000
committerSteve Huston <shuston@riverace.com>2010-03-26 14:13:07 +0000
commit22707b424b87b34892261f35f45b252a74c22ec1 (patch)
treec69c03d8e68f7e28f6ef5bcb6200999a0aec7b67 /ACE/ace/Dev_Poll_Reactor.inl
parent66841a9eb8be86c3e9ad69d77e1f9a583629c897 (diff)
downloadATCD-22707b424b87b34892261f35f45b252a74c22ec1.tar.gz
ChangeLogTag:Fri Mar 26 14:07:55 UTC 2010 Steve Huston <shuston@riverace.com>
Diffstat (limited to 'ACE/ace/Dev_Poll_Reactor.inl')
-rw-r--r--ACE/ace/Dev_Poll_Reactor.inl38
1 files changed, 1 insertions, 37 deletions
diff --git a/ACE/ace/Dev_Poll_Reactor.inl b/ACE/ace/Dev_Poll_Reactor.inl
index d031e06179f..b8392e7bb02 100644
--- a/ACE/ace/Dev_Poll_Reactor.inl
+++ b/ACE/ace/Dev_Poll_Reactor.inl
@@ -57,33 +57,6 @@ ACE_Dev_Poll_Handler_Guard::ACE_Dev_Poll_Handler_Guard
if (do_incr && this->refcounted_)
eh->add_reference ();
-
- /**
- * The below comments were here when I replaced the old refcount
- * scheme was replaced. They may still need addressing. -Steve Huston
- */
-
- /**
- * @todo Suspend the handler so that other threads will not cause
- * an event that is already in an upcall from being dispatched
- * again.
- *
- * @note The naive approach would be to simply call
- * suspend_handler_i() on the reactor. However, that would
- * cause a system call (write()) to occur. Obviously this
- * can potentially have an adverse affect on performance.
- * Ideally, the handler would only be marked as "suspended" in
- * the handler repository. If an event arrives for a
- * suspended handler that event can be "queued" in a
- * "handle readiness queue." "Queued" is quoted since a real
- * queue need not be used since duplicate events can be
- * coalesced, thus avoiding unbounded queue growth. Event
- * coalescing is already done by Linux's event poll driver
- * (/dev/epoll) so Solaris' poll driver (/dev/poll) is the
- * main concern here. The largest the queue can be is the
- * same size as the number of handlers stored in the handler
- * repository.
- */
}
ACE_INLINE
@@ -91,15 +64,6 @@ ACE_Dev_Poll_Handler_Guard::~ACE_Dev_Poll_Handler_Guard (void)
{
if (this->refcounted_ && this->eh_ != 0)
this->eh_->remove_reference ();
-
- /**
- * The below comments were here when I replaced the old refcount
- * scheme was replaced. They may still need addressing. -Steve Huston
- */
- /**
- * @todo Resume the handler so that other threads will be allowed to
- * dispatch the handler.
- */
}
ACE_INLINE void
@@ -125,7 +89,7 @@ ACE_Dev_Poll_Reactor::upcall (ACE_Event_Handler *event_handler,
{
status = (event_handler->*callback) (handle);
}
- while (status > 0);
+ while (status > 0 && event_handler != this->notify_handler_);
return status;
}