summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ThreadPool.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-06-27 10:31:41 +0200
committerBenoit Foucher <benoit@zeroc.com>2014-06-27 10:31:41 +0200
commita4f93259dc3494d98addf38e69b87eb557d432b3 (patch)
treed2b78bb5cea24e33dc1b46be22dba6167e96c9ed /cpp/src/Ice/ThreadPool.cpp
parentFix for ICE-5515 (ice_staticId on proxies) in Java, C#, Python, Ruby and PHP ... (diff)
downloadice-a4f93259dc3494d98addf38e69b87eb557d432b3.tar.bz2
ice-a4f93259dc3494d98addf38e69b87eb557d432b3.tar.xz
ice-a4f93259dc3494d98addf38e69b87eb557d432b3.zip
Better collocation optimization, fix for ICE-5489, ICE-5484
Diffstat (limited to 'cpp/src/Ice/ThreadPool.cpp')
-rw-r--r--cpp/src/Ice/ThreadPool.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp
index f806e276267..d7884f54964 100644
--- a/cpp/src/Ice/ThreadPool.cpp
+++ b/cpp/src/Ice/ThreadPool.cpp
@@ -141,14 +141,11 @@ class ThreadPoolDestroyedException
}
-IceInternal::DispatchWorkItem::DispatchWorkItem(const InstancePtr& instance) : _instance(instance)
-{
-}
-
void
IceInternal::DispatchWorkItem::execute(ThreadPoolCurrent& current)
{
- Ice::DispatcherPtr dispatcher = _instance->initializationData().dispatcher;
+ InstancePtr instance = current.getInstance();
+ Ice::DispatcherPtr dispatcher = instance->initializationData().dispatcher;
if(dispatcher)
{
try
@@ -157,17 +154,17 @@ IceInternal::DispatchWorkItem::execute(ThreadPoolCurrent& current)
}
catch(const std::exception& ex)
{
- if(_instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1)
+ if(instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1)
{
- Warning out(_instance->initializationData().logger);
+ Warning out(instance->initializationData().logger);
out << "dispatch exception:\n" << ex;
}
}
catch(...)
{
- if(_instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1)
+ if(instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1)
{
- Warning out(_instance->initializationData().logger);
+ Warning out(instance->initializationData().logger);
out << "dispatch exception:\nunknown c++ exception";
}
}
@@ -179,8 +176,7 @@ IceInternal::DispatchWorkItem::execute(ThreadPoolCurrent& current)
}
}
-IceInternal::ThreadPoolWorkQueue::ThreadPoolWorkQueue(const InstancePtr& instance,
- Selector& selector) :
+IceInternal::ThreadPoolWorkQueue::ThreadPoolWorkQueue(const InstancePtr& instance, Selector& selector) :
_instance(instance),
_selector(selector),
_destroyed(false)
@@ -1354,3 +1350,9 @@ ThreadPoolCurrent::ThreadPoolCurrent(const InstancePtr& instance,
#endif
{
}
+
+InstancePtr
+ThreadPoolCurrent::getInstance()
+{
+ return stream.instance();
+}