summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ThreadPool.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2016-01-05 12:11:36 +0100
committerBenoit Foucher <benoit@zeroc.com>2016-01-05 12:11:36 +0100
commit72db4a82794cf475d41fef0e6e040d9cf6ed1654 (patch)
tree31d18e994aae5650fea9b067c42733cbc0873526 /cpp/src/Ice/ThreadPool.cpp
parentC++11 test fixes (diff)
parentFixed potential deadlock that could occur with Ice for C++ when using colloca... (diff)
downloadice-72db4a82794cf475d41fef0e6e040d9cf6ed1654.tar.bz2
ice-72db4a82794cf475d41fef0e6e040d9cf6ed1654.tar.xz
ice-72db4a82794cf475d41fef0e6e040d9cf6ed1654.zip
Merge remote-tracking branch 'origin/3.6'
Diffstat (limited to 'cpp/src/Ice/ThreadPool.cpp')
-rw-r--r--cpp/src/Ice/ThreadPool.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp
index 2cea6bbc1ef..21772e73b04 100644
--- a/cpp/src/Ice/ThreadPool.cpp
+++ b/cpp/src/Ice/ThreadPool.cpp
@@ -657,7 +657,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread)
// If the handler called ioCompleted(), we re-enable the handler in
// case it was disabled and we decrease the number of thread in use.
//
- if(_serialize)
+ if(_serialize && current._handler.get() != _workQueue.get())
{
_selector.enable(current._handler.get(), current.operation);
}
@@ -893,7 +893,7 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
if(!_destroyed)
{
- if(_serialize)
+ if(_serialize && current._handler.get() != _workQueue.get())
{
_selector.disable(current._handler.get(), current.operation);
}
@@ -955,7 +955,7 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
}
}
- return _serialize;
+ return _serialize && current._handler.get() != _workQueue.get();
}
#if defined(ICE_USE_IOCP) || defined(ICE_OS_WINRT)