next up previous
Next: C interface to threads Up: Creating and managing threads Previous: Creating and managing threads

Operating system dependence and ACE

While all relevant operating systems now support multi-threaded programs, they all have different notions on what threads actually are on an operating system level, how they shall be managed and created. Even on Unix systems, which are usually well-standardized, there are at least three different and mutually incompatible interfaces to threads: POSIX threads [6], Solaris threads [5], and Linux threads. Some operating systems support more than one interface, but there is no interface that is supported by all operating systems. Furthermore, other systems like Microsoft Windows have interfaces that are incompatible to all Unix systems [3].

Writing multi-threaded programs based on the operating system interfaces is therefore something inherently incompatible unless much effort is spent to port it to a new system. To avoid this, we chose to use the ACE (Adaptive Communication Environment, see [7,8,4]) library which encapsulates the operating system dependence and offers a uniform interface to the user.

We chose ACE over other libraries, since it runs on almost all relevant platforms, including most Unix systems and Microsoft Windows, and since it is to our knowledge the only library which is actively developed by a large group. Furthermore, it also is significantly larger than only thread management, offering interprocess communication and communication between different computers, as well as many other services. Contrary to most other libraries, it therefore offers both the ability to support a growing deal.II as well as the prospect to support independence also with respect to future platforms.


next up previous
Next: C interface to threads Up: Creating and managing threads Previous: Creating and managing threads
Wolfgang Bangerth
2000-04-20