100 likes | 241 Views
Introduction to ACE. Bogdan Jeram (bjeram@eso.org) European Southern Observatory. ACE Hardware. What is ACE. A daptive C ommunication E nvironment freely available, open-source object-oriented (OO) framework that implements many core patterns for concurrent communication software
E N D
IntroductiontoACE Bogdan Jeram (bjeram@eso.org) European Southern Observatory Tokyo July, 2005
ACE Hardware ALMA Common Software course
What is ACE • Adaptive Communication Environment • freely available, open-source object-oriented (OO) framework that implements many core patterns for concurrent communication software • OS independent interface to OS services • Portable code • very lot of very useful functionality • TAO CORBA implementation based on ACE ALMA Common Software course
ACS threads • based on ACE threads • integrated in ACS • thread Manager • See specific presentation and documentation ALMA Common Software course
Protection/Locks Primitives • ACE_Mutex • acquire() • release() • try_acquire() • Several types of mutex: • ACE_Thread_Mutex • ACE_Recursive_Thread_Mutex • ACE_RW_Mutex (acquire_read, release_read) • ACE_RW_Thread_Mutex ALMA Common Software course
Synchronization • implementation of Dijekstra’s “counting semaphores” • ACE_Semaphores: • acquire() • release() • try_acquire() ALMA Common Software course
ACE guard class • improve application robustness • constructor -> mutex acquired • destructor -> mutex released • ACE_Guard: • acquire() • release() • try_acquire() ALMA Common Software course
ACE_Guard example ACE_Recursive_Thread_Mutex m; void write() { ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m); // critical section // explicitly: guard.release(); } ALMA Common Software course
ACE strings • ACE_CString: • Memory managment • Concatenation (using +) • Convention to C style string • … • http://www.dre.vanderbilt.edu/Doxygen/Current/html/ace/classACE__String__Base.html ALMA Common Software course
References • ACE home page: http://www.cs.wustl.edu/~schmidt/ACE.html • Several books ALMA Common Software course