并行化应用程序
使用两种方法中的任一种可将应用程序在 SMP 上进行并行化。
- 传统方法是将应用程序分解为多个进程。 这些进程使用进程间通信 (IPC) 方法进行通信,例如管道、信号量或者共享内存。 必须能够阻塞进程使其等待事件的发生(例如来自其他进程的消息),并且进程必须用类似锁的东西协调对共享对象的访问。
- 另一种方法是使用 UNIX (POSIX) 线程的可移植操作系统接口。 线程和进程一样存在协调的问题,并有类似的处理机制。 因此一个单独的进程可以同时有很多线程运行在不同的处理器上。 协调这些线程并且使得对共享数据的访问序列化是开发者的责任。
在并行化一个应用程序的时候,考虑线程和进程两者各自的优势并且决定使用哪种方法。 线程可能比进程快,并且它对内存的共享也比较容易。 另一方面,进程的实现更容易分布到多个机器或者集群中。 如果一个应用程序需要创建或者删除新实例,那么线程会更快(在派生进程中开销更大)。 就其他功能而言,线程的开销和进程差不多。