写程序的时候怎么去写多线程的程序呢?一般的方法,就是真的利用线程的控制,去实际在程序中产生其他的线程来处理。像 POSIX Threads 这套 library,就是用来产生、控制线程的函数库。而像 Microsoft VisualStudio 2005 中,也有提供控制线程的功能。这种方法,大多就是产生多个 thread,而再由主线程把工作拆开,分给子线程去运算,最后再由主线程回收结果、整合。
但是,实际上要去控制线程是蛮麻烦的,在程序的编写上,也会复杂不少;而如果我们只是想要把一些简单的循环并行化处理,用线程库来控制,实在有点杀鸡用牛刀的感觉。这时候,用Open MP就简单多了!
OpenMP 是一种能通过高阶指令,很简单地将程序并行化、多线程化的 API;在最简单的情形,甚至可以只加一行指令,就可以将循环内的程序并行化处理了!