summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ThreadPool.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-08-09 10:20:56 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-08-09 10:20:56 +0200
commit62f9ccfd51f985db0539d9af7030c0461bb23008 (patch)
treef42692c3240096e7eb400bd698125ceeec11e436 /cpp/src/Ice/ThreadPool.cpp
parentMerge remote-tracking branch 'origin/encoding11' into mx (diff)
downloadice-62f9ccfd51f985db0539d9af7030c0461bb23008.tar.bz2
ice-62f9ccfd51f985db0539d9af7030c0461bb23008.tar.xz
ice-62f9ccfd51f985db0539d9af7030c0461bb23008.zip
Fix
Diffstat (limited to 'cpp/src/Ice/ThreadPool.cpp')
-rw-r--r--cpp/src/Ice/ThreadPool.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp
index 5036d07dba3..9155b5b5094 100644
--- a/cpp/src/Ice/ThreadPool.cpp
+++ b/cpp/src/Ice/ThreadPool.cpp
@@ -377,6 +377,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
_destroyed(false),
_prefix(prefix),
_selector(instance),
+ _nextThreadId(0),
_size(0),
_sizeIO(0),
_sizeMax(0),
@@ -499,7 +500,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
{
for(int i = 0 ; i < _size ; ++i)
{
- EventHandlerThreadPtr thread = new EventHandlerThread(this);
+ EventHandlerThreadPtr thread = new EventHandlerThread(this, nextThreadId());
if(_hasPriority)
{
thread->start(_stackSize, _priority);
@@ -931,7 +932,7 @@ IceInternal::ThreadPool::ioCompleted(ThreadPoolCurrent& current)
try
{
- EventHandlerThreadPtr thread = new EventHandlerThread(this);
+ EventHandlerThreadPtr thread = new EventHandlerThread(this, nextThreadId());
if(_hasPriority)
{
thread->start(_stackSize, _priority);
@@ -1106,8 +1107,16 @@ IceInternal::ThreadPool::followerWait(ThreadPoolCurrent& current)
}
#endif
-IceInternal::ThreadPool::EventHandlerThread::EventHandlerThread(const ThreadPoolPtr& pool) :
- IceUtil::Thread(pool->_prefix + " thread"),
+string
+IceInternal::ThreadPool::nextThreadId()
+{
+ ostringstream os;
+ os << _prefix << "-" << _nextThreadId++;
+ return os.str();
+}
+
+IceInternal::ThreadPool::EventHandlerThread::EventHandlerThread(const ThreadPoolPtr& pool, const string& name) :
+ IceUtil::Thread(name),
_pool(pool),
_state(Ice::Instrumentation::ThreadStateIdle)
{
@@ -1117,12 +1126,10 @@ IceInternal::ThreadPool::EventHandlerThread::EventHandlerThread(const ThreadPool
void
IceInternal::ThreadPool::EventHandlerThread::updateObserver()
{
- const ObserverResolverPtr& resolver = _pool->_instance->initializationData().observerResolver;
- if(resolver)
+ const CommunicatorObserverPtr& obsv = _pool->_instance->initializationData().observer;
+ if(obsv)
{
- ostringstream os;
- os << _pool->_prefix << '-' << this;
- _observer.attach(resolver->getThreadObserver(_pool->_prefix, os.str(), _state, _observer.get()));
+ _observer.attach(obsv->getThreadObserver(_pool->_prefix, name(), _state, _observer.get()));
}
}