【发布时间】:2021-08-10 06:35:16
【问题描述】:
我正在使用 Linux 用 C 语言创建一个多线程应用程序。
我不确定我应该使用 POSIX 线程 API 还是 OpenMP API。
使用这两种方法的优缺点是什么?
编辑:
有人能澄清一下这两个 API 是创建 kernel-level 还是 user-level 线程吗?
【问题讨论】:
-
回复:您的编辑(内核级还是用户级?) - 这取决于实现! API 就是这样 - 接口。 OpenMP 不是实现 - but these are some implementations。 (this Wikipedia article, too 有一点信息)。
-
基本上,如果你可以在 OpenMP 中做你需要的,你应该在 OpenMP 中做。
-
OpenMP 应该用于必须在所有内核上计算的循环。 PThread 也可以做到这一点,但工作量很大而且很难维护,如果您需要启动不应阻塞主线程的单独进程,通常使用 PThread。例如:您有一个服务器,客户端连接并且必须保持与服务器的连接并与之交谈,您为每个客户端创建一个线程并在该线程中与客户端一起工作而不会阻塞主线程。这就像您创建一个新应用程序并让它在操作系统上运行而无需打扰主应用程序。