在现代多核平台上Pthreads十分适用于并行编程,任何需要并行编程的应用领域,都可以用Pthreads进行编程生成相关应用。
设计并行应用程序时需要考虑到多个方面,如下所示:
讨论这些内容已经超出了本教程的范围,感兴趣的读者可以阅读 Introduction to Parallel Computing获得快速概览。
总的来说,如果想要最大化发挥Pthreads的能力,程序需要能够分解为分离、可独立运行的子任务。如果两个任务在时间轴上是可交换的,互相交错的,那么它们可以用各自的线程来执行,如下图所示。

具备如下特性的程序有可能适合使用Pthreads编程:
目前已经存在了一些多线程编程模型,如下所示:
所有的线程可以访问全局共享内存,同时它们也有自己的私有数据。编程人员需要管理对全局共享数据的访问和同步,如下图所示。

线程安全,简单的说就是一个应用需要能够在不对共享数据产生误操作,或者产生竞争状态的情况下同时执行多个线程任务。
举个栗子,假如你的应用程序创建了几个线程,它们会调用相同的三方库操作:

对于编程人员来说,使用第三方库的影响在于如果你无法100%确定某个操作是线程安全的,那么有可能会带来相关的问题。
所以如果在应用中使用了不确定是否为线程安全的第三方库操作,最好在假设它们不符合线程安全的情况下使用,譬如尽量进行串行调用而非多线程调用。
虽然Pthreads API是ANSI/IEEE制定的标准,但在不同平台的具体实现是多样的。因此在一个平台上可以正常运行的程序,在其他平台上有可能会出错。譬如允许的线程最大数量,和线程的默认堆栈大小,这两个重要信息可能在不同平台上有差异,而它们又是设计程序中需要特别注意的信息。
后续教程中会继续讨论相关的信息。