Tokyo July, 2005 Introduction to ACE Bogdan Jeram European Southern Observatory
ALMA Project 2Tokyo, July 2005ALMA Common Software course ACE Hardware
ALMA Project 3Tokyo, July 2005ALMA 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 softwareopen-sourcepatterns OS independent interface to OS services Portable code very lot of very useful functionality TAO CORBA implementation based on ACE
ALMA Project 4Tokyo, July 2005ALMA Common Software course ACS threads based on ACE threads integrated in ACS thread Manager See specific presentation and documentation
ALMA Project 5Tokyo, July 2005ALMA 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 Project 6Tokyo, July 2005ALMA Common Software course Synchronization implementation of Dijekstra’s “counting semaphores” ACE_Semaphores: –acquire() –release() –try_acquire()
ALMA Project 7Tokyo, July 2005ALMA Common Software course ACE guard class improve application robustness constructor -> mutex acquired destructor -> mutex released ACE_Guard: –acquire() –release() –try_acquire()
ALMA Project 8Tokyo, July 2005ALMA Common Software course ACE_Guard example ACE_Recursive_Thread_Mutex m; void write() { ACE_Guard guard(m); // critical section // explicitly: guard.release(); }
ALMA Project 9Tokyo, July 2005ALMA Common Software course ACE strings ACE_CString: –Memory managment –Concatenation (using +) –Convention to C style string –… rent/html/ace/classACE__String__Base.htm l
ALMA Project 10Tokyo, July 2005ALMA Common Software course References ACE home page: Several books