From c0ce13990ad2273e794bddda413360a9f11a9c9d Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Tue, 30 Sep 2014 21:08:08 +0100 Subject: [PATCH] It seems that I have it right now --- src/i_comm_manager.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i_comm_manager.c b/src/i_comm_manager.c index 4c120d5..e4ad878 100644 --- a/src/i_comm_manager.c +++ b/src/i_comm_manager.c @@ -102,17 +102,18 @@ TR_commManagerSelect(void * _this, TR_Event event) if (! this->io_triggered) { printf("[DEBUG] [%s] io triggerd was empty\n", buffer); fflush(stdout); + pthread_mutex_lock(&this->io_triggered_lock); this->io_triggered = TR_hashEach(this->write, this, commManagerIssueWriteEvents); this->io_triggered += TR_hashEach(this->accept, this, commManagerIssueAcceptEvents); this->io_triggered += TR_hashEach(this->read, this, commManagerIssueReadEvents); - pthread_mutex_unlock(&this->io_triggered_lock); } printf("[DEBUG] [%s] io triggerd: %lu\n", buffer, this->io_triggered); fflush(stdout); if (! this->io_triggered) { + pthread_mutex_unlock(&this->io_triggered_lock); if (NULL == timer) { timeout = TR_eventDispatcherGetDataWaitTime(dispatcher); } else { @@ -123,6 +124,8 @@ TR_commManagerSelect(void * _this, TR_Event event) fflush(stdout); TR_CALL(_this, TR_CommManager, select, event, timeout); + } else { + pthread_mutex_unlock(&this->io_triggered_lock); } return TR_EVENT_DONE;