summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2007-12-08 14:35:46 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2007-12-08 14:35:46 +0000
commit78af7916b68684dcf385eada6d9b3bfdb31710a9 (patch)
treef9b99173ea88847a4d6e01da12465f8618b7b3bd /TAO
parentcb5b11c562e9bd95d1da6a648e27ddcd435ec2bd (diff)
downloadATCD-78af7916b68684dcf385eada6d9b3bfdb31710a9.tar.gz
Sat Dec 8 14:35:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLog10
-rw-r--r--TAO/tao/RTCORBA/Thread_Pool.cpp6
-rw-r--r--TAO/tao/RTCORBA/Thread_Pool.h11
3 files changed, 18 insertions, 9 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index ad939632e9d..9d8a3e31f42 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,13 @@
+Sat Dec 8 14:35:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tao/RTCORBA/Thread_Pool.cpp:
+ Use orb->run() for the dynamic threads that have an idle timeout, the
+ work_pending/perform_work loop causes signifant additional CPU load. We
+ do run the ORB for the specified idle timeout
+
+ * tao/RTCORBA/Thread_Pool.h:
+ Layout changes
+
Thu Dec 6 15:26:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
* orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp:
diff --git a/TAO/tao/RTCORBA/Thread_Pool.cpp b/TAO/tao/RTCORBA/Thread_Pool.cpp
index 84eb5ce1c0b..cf83b60f3ef 100644
--- a/TAO/tao/RTCORBA/Thread_Pool.cpp
+++ b/TAO/tao/RTCORBA/Thread_Pool.cpp
@@ -118,7 +118,11 @@ TAO_Dynamic_Thread_Pool_Threads::run (TAO_ORB_Core &orb_core)
ACE_Time_Value tv (this->lane_.dynamic_thread_idle_timeout ());
while (!orb_core.has_shutdown () && orb->work_pending (tv))
{
- orb->perform_work ();
+ // Run the ORB for the specified timeout, this prevents looping
+ // between work_pending/handle_events
+ tv = this->lane_.dynamic_thread_idle_timeout ();
+ orb->run (tv);
+ // Reset the idle timeout
tv = this->lane_.dynamic_thread_idle_timeout ();
}
diff --git a/TAO/tao/RTCORBA/Thread_Pool.h b/TAO/tao/RTCORBA/Thread_Pool.h
index 47143cf120c..29dbe0ae253 100644
--- a/TAO/tao/RTCORBA/Thread_Pool.h
+++ b/TAO/tao/RTCORBA/Thread_Pool.h
@@ -390,12 +390,10 @@ public:
CORBA::Boolean allow_request_buffering,
CORBA::ULong max_buffered_requests,
CORBA::ULong max_request_buffer_size,
- ACE_Time_Value const &dynamic_thread_idle_timeout
- );
+ ACE_Time_Value const &dynamic_thread_idle_timeout);
/// Destroy a threadpool.
- void destroy_threadpool (RTCORBA::ThreadpoolId threadpool
- );
+ void destroy_threadpool (RTCORBA::ThreadpoolId threadpool);
TAO_Thread_Pool *get_threadpool (RTCORBA::ThreadpoolId thread_pool_id);
@@ -404,9 +402,7 @@ public:
/// @name Accessors
// @{
-
TAO_ORB_Core &orb_core (void) const;
-
// @}
private:
@@ -431,8 +427,7 @@ private:
CORBA::Boolean allow_request_buffering,
CORBA::ULong max_buffered_requests,
CORBA::ULong max_request_buffer_size,
- ACE_Time_Value const &dynamic_thread_idle_timeout
- );
+ ACE_Time_Value const &dynamic_thread_idle_timeout);
RTCORBA::ThreadpoolId
create_threadpool_helper (TAO_Thread_Pool *thread_pool);