DCEThreads is an implementation of
POSIX
The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inte ...
Draft 4 threads. DCE Stands for "Distributed Computing Environment" DCEThreads allowed users to create multiple avenues of execution in a single process. It is based on pthreads interface.
History
DCE/RPC DCE/RPC, short for "Distributed Computing Environment / Remote Procedure Calls", is the remote procedure call system developed for the Distributed Computing Environment (DCE). This system allows programmers to write distributed software as if it ...
was under development, but the POSIX committee had not finalised POSIX threads at the time.
The Open Group
The Open Group is a global consortium that seeks to "enable the achievement of business objectives" by developing "open, vendor-neutral technology standards and certifications." It has over 840 member organizations and provides a number of servi ...
had to make a decision about which to use, and the final POSIX threads were different from their selection.
POSIX Draft 4 threads were limited to begin with (the final standard fixed these). Microsoft adopted DCE/RPC wholesale in Windows NT as
MSRPC
Microsoft RPC (Microsoft Remote Procedure Call) is a modified version of DCE/RPC. Additions include partial support for UCS-2 (but not Unicode) strings, implicit handles, and complex calculations in the variable-length string and structure paradigm ...
and also in
DCOM. Most of the stability and reliability problems that programmers associate with DCOM services - especially
memory leak
In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that memory which is no longer needed is not released. A memory leak may also happen when an object ...
s, exception handling problems and thread cancellation stability issues - can be traced back to the use of POSIX Draft 4 threads.
DCE/RPC is sufficiently complex that the issue of updating it to solve and modernise the POSIX Draft 4 threading problem requires highly skilled and highly specific programming knowledge. Consequently, despite its capacities, the reference implementation of DCE/RPC has been held up due to a lack of information and resources.
The key difference between POSIX Draft 4 threads and the final POSIX threads specification, aside from a number of functions being interruptible where others are not, is thread cancellation. DCE/RPC utilises thread cancellation to propagate signals across the "Remote" of RPC, such that for example a client application terminating a thread results in its corresponding thread on the server also being terminated in the same way. The final POSIX specification does not include such sophisticated cancellation methodology, and, given the difficulties that the Unix vendors had in correctly implementing the POSIX threads specification, it was removed.
Recent developments
Linux, since the introduction of NPTL and the Linux 2.6 kernel, has proper support for thread cancellation.
Current use
DCEThreads now only realistically exists as an emulation layer.
References
POSIX
{{Compu-network-stub