Pthreads 与 OpenMP

2024-04-22

我正在使用 Linux 用 C 创建一个多线程应用程序。

我不确定是否应该使用 POSIX 线程 API 还是 OpenMP API。

使用两者有何优缺点?

Edit:

有人可以澄清这两个 API 是否创建内核级 or 用户级线程?


Pthreads 和 OpenMP 代表两种完全不同的多处理范例。

Pthreads http://en.wikipedia.org/wiki/POSIX_Threads是一个用于处理线程的非常低级的 API。因此,您可以对线程管理(创建/加入/等)、互斥体等进行极其细粒度的控制。这是相当简单的。

另一方面,OpenMP http://en.wikipedia.org/wiki/OpenMP is much更高级别,更便携,并且不限制您使用 C。它也比 pthreads 更容易扩展。一个具体的例子是 OpenMP 的工作共享结构,它可以让您相对轻松地在多个线程之间划分工作。 (另请参阅维基百科的优点和缺点列表 http://en.wikipedia.org/wiki/OpenMP#Pros_and_cons.)

也就是说,您确实没有提供有关您正在实现的特定程序或您计划如何使用它的详细信息,因此几乎不可能推荐一种 API 而不是另一种。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pthreads 与 OpenMP 的相关文章

  • 在 Web 浏览器中禁用 F5 [重复]

    这个问题在这里已经有答案了 可能的重复 禁用浏览器的后退按钮 https stackoverflow com questions 961188 disable browsers back button 如何禁用浏览器上的 F5 刷新 htt
  • 当其源是 https uri 时如何使 wpf MediaElement 播放

    在 wpf 独立应用程序 exe 中 我在主窗口中包含了 MediaElement
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • 如何调整 Windows 窗体以适应任何屏幕分辨率?

    我知道这是重复的问题 但我检查了所有其他相关问题 他们的答案没有帮助 结果仍然与屏幕截图 2 中所示相同 我是 C Windows 窗体新手 如截图1所示 我有Form1有一些控件 每组控件都放在一个面板中 我在 PC1 中设计了应用程序
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • 名称查找、实例化点 (POI) 和基本类型

    以下代码针对 X 进行编译 但不适用于 double struct X void foo double void foo X namespace NN struct A void foo A foo double error foo not
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 对多个对象使用事件处理程序

    我有 20 件物品List
  • MSVC编译器下使用最大成员初始化联合

    我正在尝试初始化一个LARGE INTEGER在 C 库中为 0 确切地说是 C 03 以前 初始化是 static LARGE INTEGER freq 0 在 MinGW 下它产生了一个警告 缺少成员 LARGE INTEGER Hig
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • MT5212:本机链接失败,重复符号:'_OBJC_IVAR_$_FIRInstanceID._tokenManager'

    我通过绑定本机目标 c 库创建了 iOS dll 文件 直到现在一切都工作正常 xamarin ios 应用程序也工作正常 现在 我已在本机 Objective C 库中添加了 Firebase 框架 Firebase Auth 数据库 分
  • 将图像上传到 firebase 并在 sqlite DJango 中保存 url

    突然有人可以指导我 我制作了一个应用程序 人们有一个正常的个人资料 有一系列可以修改个人资料照片的字段 在本地它工作得很好 但是 当将其部署在heroku 免费帐户 中时 这是不可能的 因为heroku在其免费版本中确实不处理动态文件 或者
  • 返回对象数组的所有匹配元素?

    我有一个由具有两个属性的对象组成的数组 一个属性 值 是 1 到 6 之间的数字 另一个属性 id 是 1 到 200 之间的数字 如何返回所有 value 1 的对象的 id 属性并将它们写入新数组 您应该调用Array prototyp
  • IIS 7 URL 重写

    我已经为此工作了几个小时 现在正试图让它发挥作用 我有一个 CodeIgniter 网站 曾经在 Apache 服务器上运行良好 我使用 Apache URL Rewriter 作为 URL 来隐藏 index php 由于某种原因 我无法
  • python 的日志记录模块在 cygwin 下报告不正确的时区

    我正在 Windows 7 上的 cygwin 下运行使用日志记录模块的 python 脚本 date命令报告正确时间 date Tue Aug 14 2012 2 47 49 PM 然而 Python 脚本已经关闭了五个小时 2012 0
  • SQL 查询中的“NOT LIKE”

    为什么这个简单的查询会返回 ORA 00936 缺少表达式 正如您所知 数据库是 Oracle SELECT FROM transactions WHERE id NOT LIKE 1 AND NOT LIKE 2 我觉得自己很傻 但我做错
  • 如何使用 MS SQL 2008 获取数据库中的表列表?

    我想验证数据库中是否存在表 如果不存在 则创建它 如何获取当前数据库中所有表的列表 我可以使用这样的 SELECT 获取数据库列表 SELECT FROM sys databases 剩下的就是创建该表 如果该表不存在 我还尝试与数据库同时
  • +exposeBinding 不起作用

    我试图在 NSWindowController 的子类中公开自定义绑定 我在子类中添加了以下代码 void initialize self exposeBinding customBinding 然后 在 IB 中 我有一个子类的对象实例
  • 如何暂停使用DownloadManager?

    我想实现下载时 可以由用户暂停 停止 如何使用 DownloadManager 实现此目的 You can 删除下载 http developer android com reference android app DownloadMana
  • 如何从外部网站重新创建图像预览?

    与 Facebook 的 UI 类似 我尝试从外部链接网站生成预览图像 这样 当用户输入要链接的 url 时 UI 将默认扫描该网站以查找图像并抓取预览缩略图 这项技术有具体的名称吗 或者有人可以指出我学习这个的方向吗 非常感谢 其名为刮
  • 如何调整外部 SWF 的大小以适合容器?

    我想要完成的是调整外部 SWF 的大小 使其适合在舞台上作为容器呈现的显示对象 现在它显示在容器外部 重要提示 我不希望外部 SWF 占据整个舞台 我在舞台上为它准备了一个特殊的地方 那个容器 public function loaderC
  • Perl CGI 脚本根据运行返回不同的结果

    我有一个 Perl CGI 脚本 它明显随机地发出不同的 HTML 所有输入都没有改变 例如 我会跑wget两次并得到两个不同的结果 CGI 由开发数据库支持 该数据库也不会改变 我有一个调试语句 通知我相同数量的元素从数据库返回到脚本中
  • 将 csv 数据写入命名空间内的矩阵时,TCL 抛出无效命令名称

    这是一个奇怪的问题 我似乎无法弄清楚 我正在使用 TCL 8 5 我正在尝试使用以下命令将数据从 CSV 文件读取到矩阵中csv read2matrix命令 然而 每次我这样做时 它都会说我试图写入的矩阵是无效命令 我正在做的事情的片段 p
  • 嵌入式 JavaScript 中的特殊字符

    我有一些嵌入在 html 文件中的 javascript 如下所示 它有一条像这样的线 if os Mac br Safari br Chrome 一切顺利 这意味着脚本可以工作 但是验证者 http validator w3 org 正在
  • 在 App Engine 标准 python 中使用 Google Stackdriver 日志时出错

    我的堆栈 谷歌应用程序引擎标准Python 2 7 Goal 要在 Google Stackdriver Logging 中创建命名日志 https console cloud google com logs viewer https co
  • 如何将这些数据存储在cookies中?

    假设我有一些文本框 文本区域 其中的值必须存储 这些值必须在按键时存储 以便当用户过早关闭页面时不会丢失数据 这是我当前的代码 使用cookie function createCookie name value days if days v
  • 箭头呢?

    阅读有关 Haskell 各种类别主题课程的各种教程 我们发现诸如Monoid Functor Monad等等 所有这些都有数十个实例 但由于某种原因 当我们到达Arrow 只有两个实例 函数和 monad 在这两种情况下 使用Arrow与
  • 如何使用 Go 的 flag 包打印位置参数的用法?

    鉴于这个简单的 Go 程序只需要一个命令行参数 我该如何改进它以便flag Usage 给出有用的输出 package main import flag fmt os func main flag Parse if len flag Arg
  • Python中不可变对象的类型是什么(对于mypy)

    我总是用mypy in my Python程式 类型是什么 来自typing 对于不可变对象 那些可以用作字典键的对象 回到上下文中 我想编写一个从字典继承的类 并且我有以下代码 class SliceableDict dict def g
  • Pthreads 与 OpenMP

    我正在使用 Linux 用 C 创建一个多线程应用程序 我不确定是否应该使用 POSIX 线程 API 还是 OpenMP API 使用两者有何优缺点 Edit 有人可以澄清这两个 API 是否创建内核级 or 用户级线程 Pthreads