background image
Bionic Buffalo Tech Note #49: Thread Support in the 
gibraltar
 Object Request Broker
The 
gibraltar
 Global Environment
Note: The information in this section is implementation specific, and portable applications should not
rely on it.
 
All state information, data structures, tables, and run-time information owned by 
gibraltar
 are kept
in, or linked from, the global environment. The global environment is a structure, so-named to
distinguish it from the individual thread environments. By following pointers from the global
environment, all of the thread environments can be found, as can the tables allowing lookup of object
information from object references. The global environment is found by dereferencing a global pointer.
A mutex protects the pointer and the linked global environment data structures. 
A thread's 
CORBA_Environment
 is a substructure within the associated thread environment
structure.
A key (from 
pthread_key_create()
) is associated with the addresses of the thread environment
structures. Each thread can locate its own thread environment structure (if any) by applying
pthread_getspecific()
 to the key. This is cheaper than walking the data structures from the
global environment, and doesn't require that the global environment be locked during the lookup
operation. 
This Tech Note may be reproduced and distributed (including by means of the Internet) without
payment of fees or without notification to Bionic Buffalo, as long as it is not changed, altered, or
edited in any way. Any distribution or copy must include the entire Tech Note, with the original title,
copyright notice, and this paragraph. For available Tech Notes, please see the Bionic Buffalo web site
at http://www.tatanka.com/doc/technote/index.htm, or e-mail query@tatanka.com. PGP/GnuPG key
fingerprint: 
a836 e7b0 24ad 3259 7c38 b384 8804 5520 2c74 1e5a
Page 4 of 4