diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2007-12-08 14:35:46 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2007-12-08 14:35:46 +0000 |
commit | 78af7916b68684dcf385eada6d9b3bfdb31710a9 (patch) | |
tree | f9b99173ea88847a4d6e01da12465f8618b7b3bd /TAO | |
parent | cb5b11c562e9bd95d1da6a648e27ddcd435ec2bd (diff) | |
download | ATCD-78af7916b68684dcf385eada6d9b3bfdb31710a9.tar.gz |
Sat Dec 8 14:35:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/ChangeLog | 10 | ||||
-rw-r--r-- | TAO/tao/RTCORBA/Thread_Pool.cpp | 6 | ||||
-rw-r--r-- | TAO/tao/RTCORBA/Thread_Pool.h | 11 |
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); |