Sun Visual WorkShop C++ Overview

Multiprocessing and Multithreading

Multiprocessing (MP) is the hardware technology that supports tightly coupled multi-CPU systems with shared memory. Multiple CPUs provide more power to drive application performance.

Multithreading (MT) is the software technology that enables the development of parallel applications, whether on single- or multiple-processor systems. Independent threads of execution can be scheduled on multiple CPUs in a multiprocessor system, but they share resources such as memory and files, allowing single applications to execute code in parallel. Threads share resources, synchronize, and communicate with each other through the use of mutual exclusion (mutex) locks provided by the operating system. Multiprocessing and multithreading together give you a scalable solution for higher application performance on the SPARC platform.

Take Advantage of Parallelism

If your applications use parallelism, use the new multiprocessing systems and multithreaded operating environments to improve performance, responsiveness, and flexibility. With multithreading you can:

Speed Error Detection With Multithreaded Development Tools

Use multithreaded development tools to extend the C++ compiler (and multiprocessing C compiler) for multiprocessing optimizations. The multiprocessing/multithreading toolset includes multithreaded extensions to the Sun WorkShop debugger and dbx, and two additional tools: LockLint and LoopTool.

Find Inconsistent Lock Use With LockLint

Use LockLint to do static analysis of the use of mutex and read/write locks. In searching for inconsistent lock use, LockLint detects the most common causes of data races and deadlocks.

Analyze Loop Information

Take advantage of LoopTool and LoopReport, performance analysis tools used with the multiprocessing C++ and C compilers. The compilers automatically parallelize loops when they determine that it is safe and profitable to do so. With LoopTool you can:

Use the LoopReport command-line tool to create a summary table of all loop runtimes correlated with compiler hints about why a loop was not parallelized.