Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
Programming with POSIX threadsMay 1997
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-201-63392-4
Published:29 May 1997
Pages:
381
Skip Bibliometrics Section
Reflects downloads up to 20 Feb 2025Bibliometrics
Skip Abstract Section
Abstract

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications.The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O.This book offers an in-depth description of the IEEE operating system interface standard, POSIXAE (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset.Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

Cited By

  1. ACM
    Chang L, Gener S, Mack J, Suluhan H, Akoglu A and Chakrabarti C (2024). Coarse-Grained Task Parallelization by Dynamic Profiling for Heterogeneous SoC-Based Embedded System, ACM Transactions on Embedded Computing Systems, 24:1, (1-32), Online publication date: 31-Jan-2025.
  2. Yang B, Wei H, Zhu W, Zhang Y, Liu W and Xue W Full lifecycle data analysis on a large-scale and leadership supercomputer Proceedings of the 2024 USENIX Conference on Usenix Annual Technical Conference, (917-933)
  3. Wang R and Zhang Y (2024). Accelerating spliced alignment of long RNA sequencing reads using parallel maximal exact match retrieval, Computers in Biology and Medicine, 175:C, Online publication date: 1-Jun-2024.
  4. ACM
    Cheng J, Josipović L, Wickerson J and Constantinides G (2023). Parallelising Control Flow in Dynamic-scheduling High-level Synthesis, ACM Transactions on Reconfigurable Technology and Systems, 16:4, (1-32), Online publication date: 31-Dec-2024.
  5. ACM
    Luo Q, Huang J, Li J and Du Z DFCPP Runtime Library for Dataflow Programming Proceedings of the 52nd International Conference on Parallel Processing Workshops, (145-152)
  6. ACM
    Sultana N, Zhu H, Zhong K, Zheng Z, Mao R, Chauhan D, Carrasquillo S, Zhao J, Shi L, Vasilakis N and Loo B Towards Practical Application-level Support for Privilege Separation Proceedings of the 38th Annual Computer Security Applications Conference, (71-87)
  7. Kamni S, Ouhammou Y, Grolleau E, Bertout A and Hattenberger G A Reverse Design Framework for Modifiable-off-the-Shelf Embedded Systems: Application to Open-Source Autopilots Model and Data Engineering, (133-146)
  8. Moreno J, Garzón E, Fernández J and Martínez-Sánchez A (2022). HPC enables efficient 3D membrane segmentation in electron tomography, The Journal of Supercomputing, 78:17, (19097-19113), Online publication date: 1-Nov-2022.
  9. ACM
    Jammer T, Hück A, Lehr J, Protze J, Schwitanski S and Bischof C Towards a Hybrid MPI Correctness Benchmark Suite Proceedings of the 29th European MPI Users' Group Meeting, (46-56)
  10. ACM
    Ozen G and Wolfe M Performant portable OpenMP Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction, (156-168)
  11. Janjic V, Brown C and Barwell A (2021). Restoration of Legacy Parallelism: Transforming Pthreads into Farm and Pipeline Patterns, International Journal of Parallel Programming, 49:6, (886-910), Online publication date: 1-Dec-2021.
  12. Medeiros T, Berned G, Navarro A, Rossi F, Luizelli M, Brandalero M, Hübner M, Beck A and Lorenzon A (2021). Aging-Aware Parallel Execution, IEEE Embedded Systems Letters, 13:3, (122-125), Online publication date: 1-Sep-2021.
  13. Cabral F, Anacona-Mosquera O, Sampaio R, Teodoro G, Llanos C and Jacobi R (2021). Optimized execution of morphological reconstruction in large medical images on embedded devices, Journal of Real-Time Image Processing, 18:3, (779-791), Online publication date: 1-Jun-2021.
  14. Proficz J (2020). Process arrival pattern aware algorithms for acceleration of scatter and gather operations, Cluster Computing, 23:4, (2735-2751), Online publication date: 1-Dec-2020.
  15. Bilbao S, Perry J, Graham P, Gray A, Kavoussanakis K, Delap G, Mudd T, Sassoon G, Wishart T and Young S (2020). Large-Scale Physical Modeling Synthesis, Parallel Computing, and Musical Experimentation, Computer Music Journal, 43:2-3, (31-47), Online publication date: 1-Jun-2020.
  16. ACM
    Zhou H, Gracia J and Schneider R MPI Collectives for Multi-core Clusters Workshop Proceedings of the 48th International Conference on Parallel Processing, (1-10)
  17. Silva J, Hernández L, Varela N, Pineda Lezama O, Cabrera J, León Castro B, Redondo Bilbao O and Pérez Coronel L Intelligent and Distributed Data Warehouse for Student’s Academic Performance Analysis Advances in Neural Networks – ISNN 2019, (190-199)
  18. Munguía L, Oxberry G, Rajan D and Shinano Y (2019). Parallel PIPS-SBB, Computational Optimization and Applications, 73:2, (575-601), Online publication date: 1-Jun-2019.
  19. ACM
    Li J, Liu X, Jiang L, Liu B, Yang Z and Hu X An Intelligent Deadlock Locating Scheme for Multithreaded Programs Proceedings of the 2019 3rd International Conference on Intelligent Systems, Metaheuristics & Swarm Intelligence, (14-18)
  20. Grass T, Carlson T, Rico A, Ceballos G, Ayguade E, Casas M and Moreto M (2019). Sampled Simulation of Task-Based Programs, IEEE Transactions on Computers, 68:2, (255-269), Online publication date: 1-Feb-2019.
  21. Jararweh Y, Al-Ayyoub M, Fakirah M, Alawneh L and Gupta B (2019). Improving the performance of the needleman-wunsch algorithm using parallelization and vectorization techniques, Multimedia Tools and Applications, 78:4, (3961-3977), Online publication date: 1-Feb-2019.
  22. Lee C, Nam C and Park J (2019). Domain Decomposition Methods Using Dual Conversion for the Total Variation Minimization with $$L^1$$L1 Fidelity Term, Journal of Scientific Computing, 78:2, (951-970), Online publication date: 1-Feb-2019.
  23. ACM
    Santos R, Rodriguez N and Ierusalimschy R Revisiting monitors Proceedings of the XXII Brazilian Symposium on Programming Languages, (75-82)
  24. Pfrommer J, Ebner A, Ravikumar S and Karunakaran B Open Source OPC UA PubSub Over TSN for Realtime Industrial Communication 2018 IEEE 23rd International Conference on Emerging Technologies and Factory Automation (ETFA), (1087-1090)
  25. Schafmeister C and Wood A Clasp Common Lisp Implementation and Optimization Proceedings of the 11th European Lisp Symposium on European Lisp Symposium, (59-64)
  26. Bernabé G, Hernández R and Acacio M (2018). Parallel implementations of the 3D fast wavelet transform on a Raspberry Pi 2 cluster, The Journal of Supercomputing, 74:4, (1765-1778), Online publication date: 1-Apr-2018.
  27. Zanella R, Porta F, Ruggiero V and Zanetti M (2018). Serial and parallel approaches for image segmentation by numerical minimization of a second-order functional, Applied Mathematics and Computation, 318:C, (153-175), Online publication date: 1-Feb-2018.
  28. Ortega G, Filatovas E, Garzón E and Casado L (2017). Non-dominated sorting procedure for Pareto dominance ranking on multicore CPU and/or GPU, Journal of Global Optimization, 69:3, (607-627), Online publication date: 1-Nov-2017.
  29. ACM
    Qayum M, Badawy A and Cook J DyAdHyTM Proceedings of the International Symposium on Memory Systems, (327-336)
  30. S. Alves E, Cordeiro L and L. Filho E (2017). A method to localize faults in concurrent C programs, Journal of Systems and Software, 132:C, (336-352), Online publication date: 1-Oct-2017.
  31. Youkana I, Cousty J, Saouli R and Akil M (2017). Parallelization Strategy for Elementary Morphological Operators on Graphs, Journal of Mathematical Imaging and Vision, 59:1, (136-160), Online publication date: 1-Sep-2017.
  32. Torreno O and Trelles O (2017). Two level parallelism and I/O reduction in genome comparisons, Cluster Computing, 20:3, (1925-1936), Online publication date: 1-Sep-2017.
  33. ACM
    Evans N, Olivier S, Barrett R and Stelle G Scheduling Chapel Tasks with Qthreads on Manycore Proceedings of the 7th International Workshop on Runtime and Operating Systems for Supercomputers ROSS 2017, (1-8)
  34. Gutierrez-Alcoba A, Ortega G, Hendrix E and Garca I (2017). Accelerating an algorithm for perishable inventory control on heterogeneous platforms, Journal of Parallel and Distributed Computing, 104:C, (12-18), Online publication date: 1-Jun-2017.
  35. Komosinski M and Ulatowski S (2017). Multithreaded computing in evolutionary design and in artificial life simulations, The Journal of Supercomputing, 73:5, (2214-2228), Online publication date: 1-May-2017.
  36. ACM
    Hsu T, Brügner H, Roy I, Keeton K and Eugster P NVthreads Proceedings of the Twelfth European Conference on Computer Systems, (468-482)
  37. Laug P, Guibault F and Borouchaki H (2017). Parallel meshing of surfaces represented by collections of connected regions, Advances in Engineering Software, 103:C, (13-20), Online publication date: 1-Jan-2017.
  38. Torun M, Yilmaz O and Akansu A (2016). FPGA, GPU, and CPU implementations of Jacobi algorithm for eigenanalysis, Journal of Parallel and Distributed Computing, 96:C, (172-180), Online publication date: 1-Oct-2016.
  39. ACM
    Caheny P, Casas M, Moretó M, Gloaguen H, Saintes M, Ayguadé E, Labarta J and Valero M Reducing Cache Coherence Traffic with Hierarchical Directory Cache and NUMA-Aware Runtime Scheduling Proceedings of the 2016 International Conference on Parallel Architectures and Compilation, (275-286)
  40. ACM
    Huang J, Prabhu P, Jablin T, Ghosh S, Apostolakis S, Lee J and August D Speculatively Exploiting Cross-Invocation Parallelism Proceedings of the 2016 International Conference on Parallel Architectures and Compilation, (207-221)
  41. ACM
    Roy P, Liu X and Song S SMT-Aware Instantaneous Footprint Optimization Proceedings of the 25th ACM International Symposium on High-Performance Parallel and Distributed Computing, (267-279)
  42. Hansen G, Xavier P, Mish S, Voth T, Heinstein M and Glass M (2016). An MPI+$$X$$X implementation of contact global search using Kokkos, Engineering with Computers, 32:2, (295-311), Online publication date: 1-Apr-2016.
  43. ACM
    Chasapis D, Casas M, Moretó M, Vidal R, Ayguadé E, Labarta J and Valero M (2015). PARSECSs, ACM Transactions on Architecture and Code Optimization, 12:4, (1-22), Online publication date: 7-Jan-2016.
  44. Marcus A and Parameswaran A (2015). Crowdsourced Data Management, Foundations and Trends in Databases, 6:1-2, (1-161), Online publication date: 22-Dec-2015.
  45. ACM
    Liu X and Wu B ScaAnalyzer Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, (1-12)
  46. ACM
    Puffitsch W Fernando Proceedings of the 13th International Workshop on Java Technologies for Real-time and Embedded Systems, (1-9)
  47. ACM
    Kasikci B, Schubert B, Pereira C, Pokam G and Candea G Failure sketching Proceedings of the 25th Symposium on Operating Systems Principles, (344-360)
  48. Lorenzon A, Cera M and Schneider Beck A (2015). Performance and Energy Evaluation of Different Multi-Threading Interfaces in Embedded and General Purpose Systems, Journal of Signal Processing Systems, 80:3, (295-307), Online publication date: 1-Sep-2015.
  49. ACM
    Kerrison S and Eder K (2015). Energy Modeling of Software for a Hardware Multithreaded Embedded Microprocessor, ACM Transactions on Embedded Computing Systems, 14:3, (1-25), Online publication date: 21-May-2015.
  50. Yen-Ting Yu , Geng-He Lin , Jiang I and Chiang C (2015). Machine-Learning-Based Hotspot Detection Using Topological Classification and Critical Feature Extraction, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 34:3, (460-470), Online publication date: 1-Mar-2015.
  51. Marzulo L, Alves T, França F and Costa V (2014). Couillard, Parallel Computing, 40:10, (661-680), Online publication date: 1-Dec-2014.
  52. Müller S, Alonso G, Amara A and Csillaghy A Pydron Proceedings of the 11th USENIX conference on Operating Systems Design and Implementation, (645-659)
  53. ACM
    Olukotun K, Hammond L and Willey M Author's retrospective for ACM International Conference on Supercomputing 25th Anniversary Volume, (51-53)
  54. ACM
    Liu A, Liu J and Uehara T Secure streaming forensic data transmission for trusted cloud Proceedings of the 2nd international workshop on Security and forensics in communication systems, (3-10)
  55. Jongmans S, Halle S and Arbab F Automata-Based Optimization of Interaction Protocols for Scalable Multicore Platforms Proceedings of the 16th IFIP WG 6.1 International Conference on Coordination Models and Languages - Volume 8459, (65-82)
  56. ACM
    Xu R, Tian X, Yan Y, Chandrasekaran S and Chapman B Reduction Operations in Parallel Loops for GPGPUs Proceedings of Programming Models and Applications on Multicores and Manycores, (10-20)
  57. ACM
    Xu R, Tian X, Yan Y, Chandrasekaran S and Chapman B Reduction Operations in Parallel Loops for GPGPUs Proceedings of Programming Models and Applications on Multicores and Manycores, (10-20)
  58. ACM
    Hung W and Garg V (2013). AutoSynch, ACM SIGPLAN Notices, 48:6, (253-262), Online publication date: 23-Jun-2013.
  59. ACM
    Hung W and Garg V AutoSynch Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, (253-262)
  60. Ghoting A, Gunnels J, Kambadur P, Pednault E and Squillante M (2013). Trends and outlook for the massive-scale analytics stack, IBM Journal of Research and Development, 57:3-4, (2-2), Online publication date: 1-May-2013.
  61. Ojail M, David R, Lhuillier Y and Guerre A ARTM Proceedings of the Conference on Design, Automation and Test in Europe, (1510-1515)
  62. Choi H and Burgstaller B Non-blocking parallel subset construction on shared-memory multicore architectures Proceedings of the Eleventh Australasian Symposium on Parallel and Distributed Computing - Volume 140, (13-20)
  63. Le D, Chin W and Teo Y Variable permissions for concurrency verification Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering, (5-21)
  64. ACM
    McKenney P Beyond expert-only parallel programming? Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability, (25-32)
  65. Bistarelli S and Santini F Securely accessing shared resources with concurrent constraint programming Proceedings of the 10th international conference on Software Engineering and Formal Methods, (308-322)
  66. ACM
    Huang Y, Cui Z, Chen L, Zhang W, Bao Y and Chen M HaLock Proceedings of the 21st international conference on Parallel architectures and compilation techniques, (253-262)
  67. ACM
    Chen Q, Guo M and Huang Z CATS Proceedings of the 26th ACM international conference on Supercomputing, (163-172)
  68. ACM
    Terechko A, Hoogerbrugge J, Alkadi G, Guntur S, Lahiri A, Duranton M, Wüst C, Christie P, Nackaerts A and Kumar A (2012). Balancing Programmability and Silicon Efficiency of Heterogeneous Multicore Architectures, ACM Transactions on Embedded Computing Systems, 11S:1, (1-32), Online publication date: 1-Jun-2012.
  69. ACM
    Bistarelli S, Campli P and Santini F A secure coordination of agents with nonmonotonic soft Concurrent Constraint Programming Proceedings of the 27th Annual ACM Symposium on Applied Computing, (1551-1553)
  70. ACM
    Radojković P, Girbal S, Grasset A, Quiñones E, Yehia S and Cazorla F (2012). On the evaluation of the impact of shared resources in multithreaded COTS processors in time-critical environments, ACM Transactions on Architecture and Code Optimization, 8:4, (1-25), Online publication date: 1-Jan-2012.
  71. ACM
    Gopalakrishnan G, Kirby R, Siegel S, Thakur R, Gropp W, Lusk E, De Supinski B, Schulz M and Bronevetsky G (2011). Formal analysis of MPI-based parallel programs, Communications of the ACM, 54:12, (82-91), Online publication date: 1-Dec-2011.
  72. Jannesari A, Westphal-Furuya M and Tichy W Dynamic data race detection for correlated variables Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I, (14-26)
  73. ACM
    Torres W, Pinto G, Fernandes B, Oliveira J, Ximenes F and Castor F Are Java programmers transitioning to multicore? Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE! 2011, AOOPES'11, NEAT'11, & VMIL'11, (123-128)
  74. ACM
    Smith A and Kulkarni P Localizing globals and statics to make C programs thread-safe Proceedings of the 14th international conference on Compilers, architectures and synthesis for embedded systems, (205-214)
  75. Müldner T, Fry C, Corbin T and Miziołek J Parallelization of an XML data compressor on multi-cores Proceedings of the 9th international conference on Parallel Processing and Applied Mathematics - Volume Part II, (101-110)
  76. ACM
    Viry P Parallel and distributed programming extensions for mainstream languages based on pi-calculus Proceedings of the 30th annual ACM SIGACT-SIGOPS symposium on Principles of distributed computing, (343-344)
  77. ACM
    Auhagen S, Bergstrom L, Fluet M and Reppy J Garbage collection for multicore NUMA machines Proceedings of the 2011 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness, (51-57)
  78. ACM
    Prabhu P, Ghosh S, Zhang Y, Johnson N and August D Commutative set Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, (1-11)
  79. ACM
    Prabhu P, Ghosh S, Zhang Y, Johnson N and August D (2011). Commutative set, ACM SIGPLAN Notices, 46:6, (1-11), Online publication date: 4-Jun-2011.
  80. Schuessler O and Loyola D Parallel training of artificial neural networks using multithreaded and multicore CPUs Proceedings of the 10th international conference on Adaptive and natural computing algorithms - Volume Part I, (70-79)
  81. Hobor A and Gherghina C Barriers in concurrent separation logic Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software, (276-296)
  82. ACM
    Kestor G, Karakostas V, Unsal O, Cristal A, Hur I and Valero M RMS-TM: a comprehensive benchmark suite for transactional memory systems Proceedings of the 2nd ACM/SPEC International Conference on Performance engineering, (335-346)
  83. Mara H, Krömker S, Jakob S and Breuckmann B GigaMesh and gilgamesh Proceedings of the 11th International conference on Virtual Reality, Archaeology and Cultural Heritage, (131-138)
  84. ACM
    Vandierendonck H, Rul S and De Bosschere K The Paralax infrastructure Proceedings of the 19th international conference on Parallel architectures and compilation techniques, (389-400)
  85. Li J, Wang S, Hsu P, Chen P and Lee J A multi-core software API for embedded MPSoC environments Proceedings of the Second Russia-Taiwan conference on Methods and tools of parallel programming multicomputers, (40-50)
  86. Howison M, Bethel E and Childs H MPI-hybrid parallelism for volume rendering on large, multi-core systems Proceedings of the 10th Eurographics conference on Parallel Graphics and Visualization, (1-10)
  87. ACM
    Tallent N, Mellor-Crummey J and Porterfield A (2010). Analyzing lock contention in multithreaded applications, ACM SIGPLAN Notices, 45:5, (269-280), Online publication date: 1-May-2010.
  88. ACM
    Yang L, Yu L, Tang J, Wang L, Zhao J and Li X Enabling multi-core based monitoring and fault tolerance in C++/Java Proceedings of the 3rd International Workshop on Multicore Software Engineering, (32-39)
  89. Brady E and Hammond K (2010). Correct-by-Construction Concurrency: Using Dependent Types to Verify Implementations of Effectful Resource Usage Protocols, Fundamenta Informaticae, 102:2, (145-176), Online publication date: 1-Apr-2010.
  90. ACM
    Van Nieuwpoort R, Wrzesińska G, Jacobs C and Bal H (2010). Satin, ACM Transactions on Programming Languages and Systems, 32:3, (1-39), Online publication date: 1-Mar-2010.
  91. ACM
    Tallent N, Mellor-Crummey J and Porterfield A Analyzing lock contention in multithreaded applications Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (269-280)
  92. Peusaari J, Ikonen J and Porras J Distribution Issues in Real-Time Interactive Simulation Proceedings of the 2009 13th IEEE/ACM International Symposium on Distributed Simulation and Real Time Applications, (227-230)
  93. Wolffe G and Trefftz C (2009). Teaching parallel computing, Journal of Computing Sciences in Colleges, 25:1, (21-28), Online publication date: 1-Oct-2009.
  94. Backes W and Wetzel S Parallel Lattice Basis Reduction Using a Multi-threaded Schnorr-Euchner LLL Algorithm Proceedings of the 15th International Euro-Par Conference on Parallel Processing, (960-973)
  95. Izzo D, Rucinski M and Ampatzis C Parallel global optimisation meta-heuristics using an asynchronous island-model Proceedings of the Eleventh conference on Congress on Evolutionary Computation, (2301-2308)
  96. ACM
    Tallent N and Mellor-Crummey J (2009). Effective performance measurement and analysis of multithreaded applications, ACM SIGPLAN Notices, 44:4, (229-240), Online publication date: 14-Feb-2009.
  97. ACM
    Tallent N and Mellor-Crummey J Effective performance measurement and analysis of multithreaded applications Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming, (229-240)
  98. Adams M and Kwon M Vulnerabilities of the real-time transport (RTP) protocol for voice over IP (VoIP) traffic Proceedings of the 6th IEEE Conference on Consumer Communications and Networking Conference, (958-962)
  99. ACM
    Krischer R and Buhr P Asynchronous exception propagation in blocked tasks Proceedings of the 4th international workshop on Exception handling, (8-15)
  100. ACM
    Bachmann P Deferred cancellation Proceedings of the 15th Conference on Pattern Languages of Programs, (1-17)
  101. Brodman J, Fraguela B, Garzarán M and Padua D Design Issues in Parallel Array Languages for Shared Memory Proceedings of the 8th international workshop on Embedded Computer Systems: Architectures, Modeling, and Simulation, (208-217)
  102. Ezekiel J and Lüttgen G (2008). Measuring and Evaluating Parallel State-Space Exploration Algorithms, Electronic Notes in Theoretical Computer Science (ENTCS), 198:1, (47-61), Online publication date: 1-Feb-2008.
  103. Moura P, Crocker P and Nunes P High-level multi-threading programming in logtalk Proceedings of the 10th international conference on Practical aspects of declarative languages, (265-281)
  104. White D and Lüttgen G (2008). Embedded systems programming, EURASIP Journal on Embedded Systems, 2008, (1-17), Online publication date: 1-Jan-2008.
  105. Zumbusch G A container-iterator parallel programming model Proceedings of the 7th international conference on Parallel processing and applied mathematics, (1130-1139)
  106. Huang J, Jiao X, Fujimoto R and Zha H DAG-guided parallel asynchronous variational integrators with super-elements Proceedings of the 2007 Summer Computer Simulation Conference, (691-697)
  107. ACM
    Tremblay G, Malenfant B, Salah A and Zentilli P (2007). Introducing students to professional software construction, ACM SIGCSE Bulletin, 39:3, (176-180), Online publication date: 25-Jun-2007.
  108. ACM
    Tremblay G, Malenfant B, Salah A and Zentilli P Introducing students to professional software construction Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education, (176-180)
  109. ACM
    Stroustrup B Evolving a language in and for the real world Proceedings of the third ACM SIGPLAN conference on History of programming languages, (4-1-4-59)
  110. Mateescu G Overcoming the processor communication overhead in MPI applications Proceedings of the 2007 spring simulation multiconference - Volume 2, (375-378)
  111. Antony J, Janes P and Rendell A Exploring thread and memory placement on NUMA architectures Proceedings of the 13th international conference on High Performance Computing, (338-352)
  112. ACM
    McCartney W and Sridhar N Abstractions for safe concurrent programming in networked embedded systems Proceedings of the 4th international conference on Embedded networked sensor systems, (167-180)
  113. Hankins R, Chinya G, Collins J, Wang P, Rakvic R, Wang H and Shen J Multiple Instruction Stream Processor Proceedings of the 33rd annual international symposium on Computer Architecture, (114-127)
  114. ACM
    Barton C, Casçaval C, Almási G, Zheng Y, Farreras M, Chatterje S and Amaral J Shared memory programming for large scale machines Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation, (108-117)
  115. ACM
    Barton C, Casçaval C, Almási G, Zheng Y, Farreras M, Chatterje S and Amaral J (2006). Shared memory programming for large scale machines, ACM SIGPLAN Notices, 41:6, (108-117), Online publication date: 11-Jun-2006.
  116. ACM
    Hankins R, Chinya G, Collins J, Wang P, Rakvic R, Wang H and Shen J (2006). Multiple Instruction Stream Processor, ACM SIGARCH Computer Architecture News, 34:2, (114-127), Online publication date: 1-May-2006.
  117. Melatti I, Palmer R, Sawaya G, Yang Y, Kirby R and Gopalakrishnan G Parallel and distributed model checking in eddy Proceedings of the 13th international conference on Model Checking Software, (108-125)
  118. Korch M and Rauber T (2006). Optimizing locality and scalability of embedded Runge--Kutta solvers using block-based pipelining, Journal of Parallel and Distributed Computing, 66:3, (444-468), Online publication date: 1-Mar-2006.
  119. ACM
    Buhr P and Harji A (2005). Implicit-signal monitors, ACM Transactions on Programming Languages and Systems, 27:6, (1270-1343), Online publication date: 1-Nov-2005.
  120. Huang M and Bode B A Performance Comparison of Tree and Ring Topologies in Distributed Systems Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 13 - Volume 14
  121. Blaar H, Lange T, Winter R and Karnstedt M Possibilities to Solve the Clique Problem by Thread Parallelism using Task Pools Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 5 - Volume 06
  122. Duller A, Towner D, Panesar G, Gray A and Robbins W picoArray Technology Proceedings of the conference on Design, Automation and Test in Europe - Volume 3, (106-111)
  123. Keller J and Gravinghoff A (2005). Thread-Based Virtual Duplex Systems in Embedded Environments, IEEE Micro, 25:2, (60-69), Online publication date: 1-Mar-2005.
  124. Hoffmann R, Korch M and Rauber T Performance Evaluation of Task Pools Based on Hardware Synchronization Proceedings of the 2004 ACM/IEEE conference on Supercomputing
  125. Zhang G, Silvera R and Archambault R Structure and algorithm for implementing OpenMP workshares Proceedings of the 5th international conference on OpenMP Applications and Tools: shared Memory Parallel Programming with OpenMP, (110-120)
  126. Sood N and Wieland F Simulation of airports/aviation systems Proceedings of the 35th conference on Winter simulation: driving innovation, (1650-1655)
  127. ACM
    Grossman D (2003). Type-safe multithreading in cyclone, ACM SIGPLAN Notices, 38:3, (13-25), Online publication date: 18-Mar-2003.
  128. ACM
    Grossman D Type-safe multithreading in cyclone Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation, (13-25)
  129. Sung M, Kim S, Park S, Chang N and Shin H (2002). Comparative performance evaluation of Java threads for embedded applications, Information Processing Letters, 84:4, (221-225), Online publication date: 30-Nov-2002.
  130. Williams N An Implementation of Scheduler Activations on the NetBSD Operating System Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference, (99-108)
  131. ACM
    Roychoudhury A and Mitra T Specifying multithreaded Java semantics for program verification Proceedings of the 24th International Conference on Software Engineering, (489-499)
  132. Blaar H, Legeler M and Rauber T Efficiency of Thread-Parallel Java Programs from Scientific Computing Proceedings of the 16th International Parallel and Distributed Processing Symposium
  133. Eleftheriou M, Chatterjee S and Moreira J A C++ Implementation of the Co-Array Programming Model for Blue Gene/L Proceedings of the 16th International Parallel and Distributed Processing Symposium
  134. ACM
    Luk C Tolerating memory latency through software-controlled pre-execution in simultaneous multithreading processors Proceedings of the 28th annual international symposium on Computer architecture, (40-51)
  135. ACM
    Luk C (2001). Tolerating memory latency through software-controlled pre-execution in simultaneous multithreading processors, ACM SIGARCH Computer Architecture News, 29:2, (40-51), Online publication date: 1-May-2001.
  136. Kirchberg M and Schewe K A comparison of multi-level concurrency control protocols Proceedings of the 12th Australasian database conference, (153-160)
  137. ACM
    Buhr P, Harji A, Lim P and Chen J (2000). Object-oriented real-time concurrency, ACM SIGPLAN Notices, 35:10, (29-46), Online publication date: 1-Oct-2000.
  138. ACM
    Buhr P, Harji A, Lim P and Chen J Object-oriented real-time concurrency Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (29-46)
  139. Bethel W (2000). Visualization Dot Com, IEEE Computer Graphics and Applications, 20:3, (17-20), Online publication date: 1-May-2000.
  140. ACM
    Ling Y, Mullen T and Lin X (2000). Analysis of optimal thread pool size, ACM SIGOPS Operating Systems Review, 34:2, (42-55), Online publication date: 1-Apr-2000.
  141. ACM
    Agesen O, Detlefs D, Garthwaite A, Knippel R, Ramakrishna Y and White D (1999). An efficient meta-lock for implementing ubiquitous synchronization, ACM SIGPLAN Notices, 34:10, (207-222), Online publication date: 1-Oct-1999.
  142. ACM
    Agesen O, Detlefs D, Garthwaite A, Knippel R, Ramakrishna Y and White D An efficient meta-lock for implementing ubiquitous synchronization Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (207-222)
  143. ACM
    Boissonnat J, Cazals F, Da F, Devillers O, Pion S, Rebufat F, Teillaud M and Yvinec M Programming with CGAL Proceedings of the fifteenth annual symposium on Computational geometry, (421-422)
  144. Humphrey M and Stankovic J (1999). Predictable Threads for Dynamic, Hard Real-Time Environments, IEEE Transactions on Parallel and Distributed Systems, 10:3, (281-296), Online publication date: 1-Mar-1999.
  145. Kwak H, Lee B, Hurson A, Yoon S and Hahn W (1999). Effects of Multithreading on Cache Performance, IEEE Transactions on Computers, 48:2, (176-184), Online publication date: 1-Feb-1999.
  146. Lu H, Hu Y and Zwaenepoel W OpenMP on networks of workstations Proceedings of the 1998 ACM/IEEE conference on Supercomputing, (1-15)
Contributors
  • Hewlett-Packard Inc.

Reviews

John R. Levine

Every large computer (and many small ones) now has more than one CPU. The POSIX 1003.1-c pthread package permits programs to use these multiple processors in a reasonably portable way. Butenhof, one of the authors of the pthread standard, has written a complete and fairly accessible introduction to pthreads. He assumes that the reader is familiar with C programming and simple POSIX programming, but not with threads and parallel programming. The first few chapters introduce pthreads creation and management. Butenhof explains each concept using complete C programs, with program line numbers in the margin next to the explanatory text to help readers keep track of the programs. Chapter 3 addresses synchronization with mutexes and condition variables. Chapter 4 covers three styles of threaded programming—pipeline, work crew, and client/server. Chapter 5 covers a variety of more advanced topics, including storage management and processor scheduling. This completes the basics of pthreads, but it is only about half of the book. The remaining chapters are the more valuable part of the book; they discuss how to make pthreads work in connection with the rest of POSIX, which can be decidedly hostile to threads. Chapter 6 covers the interaction between threads and important POSIX facilities, including standard I/O, signals, and the many library routines that are not thread-safe. Chapter 7 goes into more practical aspects, such as more complex synchronization, queue managers, and wrapping existing libraries. Chapter 8 discusses debugging, and in particular how to avoid it, since thread debugging is so painful. Chapters 9 and 10 conclude with a reference summary of pthreads and a discussion of future standardization. All in all, I like this book. It is written in a clear and pleasantly informal first-person style. Some of the code examples are long, but necessarily so, and the explanations untangle them adequately. The practical information in the second half of the book is essential for effective pthreads programming, particularly for programmers who have not previously experienced the many new and exciting failure modes that threads adds to sequential code. The only area where I would have wanted more information is in planning thread granularity. Butenhof warns the reader not to make thread granularity too fine, in which case the program spends all its time in synchronization rather than in doing useful work, or too coarse, in which case programs are unresponsive and do not use all available processors. He does not give readers much help in figuring out where the happy medium lies, however. Despite these minor issues, this is an excellent introduction to pthreads programming, containing the encapsulated wisdom of one of the masters of the field.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Recommendations