Synopses & Reviews
Professional Multicore Programming: Design and Implementation for C++ DevelopersIn order to increase overall system performance, computer manufacturers have opted to add more processors rather than increase clock frequency. In turn, if you want an application to benefit from the next new processor, that application will have to be modified to exploit multiprocessor computers. This practical book shifts the focus from sequential programming techniques to parallel and multithreaded programming techniques and introduces you to the everyday fundamentals of programming for multiprocessor and multithreaded architectures.
This duo of experienced authors takes the complicated topics of parallel processing and software concurrency and presents them in a clear, understandable manner. Their no-nonsense approach to programming multiprocessing and multithreading models, along with numerous helpful examples, demonstrates how to execute successful multicore programming and enables you to harness the power of the new multicore processors to their fullest potential.
What you will learn from this book
The various pitfalls, traps, and challenges of concurrency programming and synchronization
Methods and techniques for debugging and testing multicore programming
How to take advantage of processor-specific features using cross-platform techniques
The role of the operating system in multicore programming
Ways to take advantage of framework classes as building blocks for concurrency
How to reduce the complexity of task synchronization and communication through the use of interface classes
Who this book is for
This book is for developers of various skill levels who are making the move into multicore programming and application development.
Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
Synopsis
This book presents the basics of multicore programming in terms the average, experienced software developer can understand. The reader is introduced to the everyday fundamentals of programming for multiprocessor and multithreaded architecture and then moved on to multi-core programming. This book takes complicated almost unapproachable parallel programming techniques and presents them in a simple, understandable manner. The authors address the pitfalls and traps of concurrency programming and synchronization. They also provide a no nonsense discussion of multithreading models, along with numerous programming examples that demonstrate successful multi-core programming, in addition to methods and techniques for debugging and testing multicore programming.
Topics covered in this book:
- The Basic Challenges of Multicore Programming
- Approaches To Multicore Programming
- Mutexes, Semaphores, and Locking
- Posix/Java Thread Programming
- Testing and Debugging Multi-core Programs.
Synopsis
An accessible introduction to the proven method of value investing
An ardent follower of Warren Buffett-the most high-profile value investor today-author Charles Mizrahi has long believed in the power of this proven approach. Now, with Getting Started in Value Investing, Mizrahi breaks down this successful strategy so that anyone can learn how to use it in his or her own investment endeavors. Written in a straightforward and accessible style, this book helps readers gain an overall understanding of the value approach to investing and presents statistics that reveal the overwhelming success of this approach through a variety of markets. Engaging and informative, Getting Started in Value Investing skillfully shows readers how to look for undervalued companies and provides them with the tools they need to succeed in today's markets.
Charles S. Mizrahi (Brooklyn, NY) is Managing Partner of CGM Partners Fund LP. He is also editor of Hidden Values Alert, a monthly newsletter focused on value investing. Mizrahi has more than 25 years of investment experience and is frequently quoted in the press. Many of his articles appear online at gurufocus.com as well as on other financial sites.
Synopsis
Professional Multicore Programming: Design and Implementation for C++ Developers presents the basics of multicore programming in a simple, easy-to-understand manner so that you can easily apply the concepts to your everyday projects. Learn the fundamentals of programming for multiprocessor and multithreaded architecture, progress to multi-core programming and eventually become comfortable with programming techniques that otherwise can be difficult to understand. Anticipate the pitfalls and traps of concurrency programming and synchronization before you encounter them yourself by finding them outlined in this indispensable guide to multicore programming.
About the Author
Cameron Hughes is a professional software developer. He is a software engineer at CTEST Laboratories and a staff programmer/analyst at Youngstown State University. With over 15 years as a software developer, Cameron Hughes has been involved in software development efforts of all sizes, from business and industrial applications to aerospace design and development projects. Cameron is the designer of the Cognopaedia and is currently project leader on the GRIOT project that runs on the Pantheon at CTEST Laboratories. The Pantheon is a 24 node multicore cluster that is used in the development of multithreaded search engine and text extraction programs.
Tracey Hughes is a senior graphics programmer at CTEST Laboratories, where she develops knowledge and information visualization software. Tracey Hughes is the lead designer for the M.I.N.D, C.R.A.I.G, and NOFAQS projects that utilize epistemic visualization at CTEST Laboratories. She regularly contributes to Linux development software efforts. She is also a team member on the GRIOT project.
Cameron and Tracey Hughes are also the authors of six books on software development, multithreaded, and parallel programming: Parallel and Distributed Programming Using C (Addison Wesley, 2003), Linux Rapid Application Development (Hungry Minds, 2000), Mastering the Standard C++ Classes (Wiley, 1999), Object - Oriented Multithreading Using C (Wiley, 1997), Collection and Container Classes in C++ (Wiley, 1996), and Object - Oriented I/O Using C Iostreams (Wiley, 1995).
Table of Contents
Introduction.
Chapter 1: The New Architecture.
Chapter 2: Four Effective Multicore Designs.
Chapter 3: The Challenges of Multicore Programming.
Chapter 4: The Operating System’s Role.
Chapter 5: Processes, C++ Interface Classes, and Predicates.
Chapter 6: Multithreading.
Chapter 7: Communication and Synchronization of Concurrent Tasks.
Chapter 8: PADL and PBS: Approaches to Application Design.
Chapter 9: Modeling Software Systems That Require Concurrency.
Chapter 10: Testing and Logical Fault Tolerance for Parallel Programs.
Appendix A: UML for Concurrent Design.
Appendix B: Concurrency Models.
Appendix C: POSIX Standard for Thread Management.
Appendix D: POSIX Standard for Process Managemnet.
Bibliography.
Index.