我正在使用Linux用C创建一个多线程应用程序.
我不确定是应该使用POSIX线程API还是OpenMP API.
优点和缺点是什么;使用这两种方法的缺点是什么?
Edit:
有人能澄清一下这两个API是创建kernel-level个线程还是user-level个线程吗?
我正在使用Linux用C创建一个多线程应用程序.
我不确定是应该使用POSIX线程API还是OpenMP API.
优点和缺点是什么;使用这两种方法的缺点是什么?
Edit:
有人能澄清一下这两个API是创建kernel-level个线程还是user-level个线程吗?
Pthread和OpenMP代表了两种完全不同的多处理范例.
Pthreads是用于处理线程的非常低级的API.因此,您可以非常细粒度地控制线程管理(创建/联接/等)、互斥锁等.这是相当简单的.
另一方面,OpenMP的级别要高出much,可移植性更强,并且不会限制您使用C语言,它也比pthread更容易扩展.这方面的一个具体示例是OpenMP的工作共享 struct ,它允许您相对轻松地将工作分配到多个线程.(另见维基百科的pros and cons list.)
也就是说,您实际上没有提供关于您正在实现的具体程序的详细信息,或者您计划如何使用它,因此推荐一种API而不是另一种API几乎是不可能的.