• Providing a "processor management" command to control which processors are used by the system.
Although these capabilities are universally available in all multiprocessor systems of which the working group was aware, they were dropped from the standard because of many unresolved issues, including these:
• What good does it do to know how many processors there are, if you cannot tell how many your code may use at any time? Remember, the information can change while you are asking for it. What is really needed is a function asking the question "Would the current process benefit from creation of another thread?" We don't know how to answer that question, or how to provide enough information on all reasonable architectures that the application can answer it.
• How can we bind a thread to a processor across a wide range of multiprocessor architecture? On a nonuniform memory access system, for example, representing the processors as a uniform array of integer identifiers would be misleading and useless —- binding one thread to processor 0 and another closely cooperative thread to processor 1 might put them across a relatively slow communications port rather than on two processors sharing a bank of memory.
Eventually, some standards organization (possibly POSIX) will need to address these issues and develop portable interfaces. The folks who attempt this feat may find that they need to limit the scope of the standard to a field narrower than "systems on which people may wish to use threads."
Bibliography
[Anderson, 1991] Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy, "Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism,"
[Birrell, 1989] Andrew D. Birrell,
An introduction to the concepts of threaded programming. Although specifically oriented toward Modula-2+ and SRC's Taos multithreaded operating system, many essential concepts remain easily recognizable in Pthreads.
[Boykin, 1993] Joseph Boykin, David Kirschen, Alan Langerman, and J Susan LoVerso,
[Custer, 1993] Helen Custer,
[Digital, 1996] Digital Equipment Corporation,
Reference manual for Digital's DECthreads implementation of the Pthreads standard. An appendix (which will be removed after the Digital UNIX 4.0 and OpenVMS 7.0 versions) provides reference information on the obsolete cma and DCE threads (POSIX 1003.4a draft 4) interfaces.
[Dijkstra, 1965] E. W. Dijkstra, "Solution of a Problem in Concurrent Programming Control,"
[Dijkstra, 1968a] E. W. Dijkstra, "Cooperating Sequential Processes,"
[Dijkstra, 1968b] E. W. Dijkstra, 'The Structure of the THE'—Multiprogramming System,"
[Gallmeister, 1995] BiLl O. Gallmeister,
POSIX 1003.1b-1993 realtime programming (based on a near-final draft of the standard).
[Hoare, 1974] C.A.R. Hoare, "Monitors: An Operating System Structuring Concept,"
[IEEE, 1996]