Multithreaded programming is a narrow, but very important topic in computer science today. All of the major UNIX Software vendors are implementing threads and multithreaded programming especially in multiprocessor computing. This manual provides a good basis for undersanding the technology.
Providing an overview of the Solaris and POSIX multithreading architectures, this book explains threads at a level that is completely accessible to programmers and system architects with no previous knowledge of threads. It covers the business and technical benefits of threaded programs, along with discussions of third party software that is threaded, pointing out the benefits. It also describes the design of the Solaris MT API, with references to distinctions in POSIX, contains a set of example programs which illustrate the usage of the Solaris and POSIX APIs, and explains the use of programming tools: Thread Analyzer, LockLint, LoopTool and Debugger.
With threads programming, multiple tasks run concurrently within the same program. They can share a single CPU as processes do or take advantage of multiple CPUs when available. They provide a clean way to divide the tasks of a program while sharing data.
"The Solaris™Internals volumes are simply the best and most comprehensive treatment of the Solaris (and OpenSolaris) Operating Environment. Any person using Solaris--in any capacity--would be remiss not to include these two new volumes in their personal library. With advanced observability tools in Solaris (likeDTrace), you will more often find yourself in what was previously unchartable territory. Solaris™ Internals, Second Edition, provides us a fantastic means to be able to quickly understand these systems and further explore the Solaris architecture--especially when coupled with OpenSolaris source availability." --Jarod Jenson, chief systems architect, Aeysis "The Solaris™ Internals volumes by Jim Mauro and Richard McDougall must be on your bookshelf if you are interested in in-depth knowledge of Solaris operating system internals and architecture. As a senior Unix engineer for many years, I found the first edition of Solaris™ Internals the only fully comprehensive source for kernel developers, systems programmers, and systems administrators. The new second edition, with the companion performance and debugging book, is an indispensable reference set, containing many useful and practical explanations of Solaris and its underlying subsystems, including tools and methods for observing and analyzing any system running Solaris 10 or OpenSolaris." --Marc Strahl, senior UNIX engineer Solaris™ Internals, Second Edition, describes the algorithms and data structures of all the major subsystems in the Solaris 10 and OpenSolaris kernels. The text has been extensively revised since the first edition, with more than 600 pages of new material. Integrated Solaris tools and utilities, including DTrace, MDB, kstat, and the process tools, are used throughout to illustrate how the reader can observe the Solaris kernel in action. The companion volume, Solaris™ Performance and Tools, extends the examples contained here, and expands the scope to performance and behavior analysis. Coverage includes: Virtual and physical memory Processes, threads, and scheduling File system framework and UFS implementation Networking: TCP/IP implementation Resource management facilities and zones The Solaris™ Internals volumes make a superb reference for anyone using Solaris 10 and OpenSolaris.
Windows NT is coming back as a subject. This book brings multithreading to the Windows NT operating system. It covers a specialized area of interest to programmers--multitasking computer operations. One current application that the authors cover is video on demand, bringing together the cable and movie industries.
Master the essentials of concurrent programming,including testingand debugging This textbook examines languages and libraries for multithreadedprogramming. Readers learn how to create threads in Java and C++,and develop essential concurrent programming and problem-solvingskills. Moreover, the textbook sets itself apart from othercomparable works by helping readers to become proficient in keytesting and debugging techniques. Among the topics covered, readersare introduced to the relevant aspects of Java, the POSIX Pthreadslibrary, and the Windows Win32 Applications ProgrammingInterface. The authors have developed and fine-tuned this book through theconcurrent programming courses they have taught for the past twentyyears. The material, which emphasizes practical tools andtechniques to solve concurrent programming problems, includesoriginal results from the authors' research. Chaptersinclude: * Introduction to concurrent programming * The critical section problem * Semaphores and locks * Monitors * Message-passing * Message-passing in distributed programs * Testing and debugging concurrent programs As an aid to both students and instructors, class libraries havebeen implemented to provide working examples of all the materialthat is covered. These libraries and the testing techniques theysupport can be used to assess student-written programs. Each chapter includes exercises that build skills in programwriting and help ensure that readers have mastered the chapter'skey concepts. The source code for all the listings in the text andfor the synchronization libraries is also provided, as well asstartup files and test cases for the exercises. This textbook is designed for upper-level undergraduates andgraduate students in computer science. With its abundance ofpractical material and inclusion of working code, coupled with anemphasis on testing and debugging, it is also a highly usefulreference for practicing programmers.
Beginning and experienced programmers will use this comprehensive guide to persistent memory programming. You will understand how persistent memory brings together several new software/hardware requirements, and offers great promise for better performance and faster application startup times—a huge leap forward in byte-addressable capacity compared with current DRAM offerings. This revolutionary new technology gives applications significant performance and capacity improvements over existing technologies. It requires a new way of thinking and developing, which makes this highly disruptive to the IT/computing industry. The full spectrum of industry sectors that will benefit from this technology include, but are not limited to, in-memory and traditional databases, AI, analytics, HPC, virtualization, and big data. Programming Persistent Memory describes the technology and why it is exciting the industry. It covers the operating system and hardware requirements as well as how to create development environments using emulated or real persistent memory hardware. The book explains fundamental concepts; provides an introduction to persistent memory programming APIs for C, C++, JavaScript, and other languages; discusses RMDA with persistent memory; reviews security features; and presents many examples. Source code and examples that you can run on your own systems are included. What You’ll Learn Understand what persistent memory is, what it does, and the value it brings to the industry Become familiar with the operating system and hardware requirements to use persistent memory Know the fundamentals of persistent memory programming: why it is different from current programming methods, and what developers need to keep in mind when programming for persistence Look at persistent memory application development by example using the Persistent Memory Development Kit (PMDK)Design and optimize data structures for persistent memoryStudy how real-world applications are modified to leverage persistent memoryUtilize the tools available for persistent memory programming, application performance profiling, and debugging Who This Book Is For C, C++, Java, and Python developers, but will also be useful to software, cloud, and hardware architects across a broad spectrum of sectors, including cloud service providers, independent software vendors, high performance compute, artificial intelligence, data analytics, big data, etc.