编译时 -pthread 和 -lpthread 之间的区别

2024-01-09

有什么区别gcc -pthread and gcc -lpthread编译多线程程序时使用哪个?


-pthread告诉编译器链接 pthread 库并配置线程的编译。

例如,下面显示了当-pthread选项在我的 Ubuntu 机器上安装的 GCC 软件包上使用:

$ gcc -pthread -E -dM test.c > dm.pthread.txt
$ gcc          -E -dM test.c > dm.nopthread.txt
$ diff dm.pthread.txt dm.nopthread.txt 
152d151
< #define _REENTRANT 1
208d206
< #define __USE_REENTRANT 1

使用-lpthread选项仅导致 pthread 库被链接 - 预定义的宏不会被定义。

底线:你应该使用-pthread option.


注:-pthread选项在 GCC 文档中被记录为特定于平台的选项,因此它可能并不总是可用。但是,它可以在 GCC 文档未明确列出的平台上使用(例如 i386 和 x86-64) - 您应该在可用时使用它。

另请注意,GCC 使用了其他类似的选项,例如-pthreads(列为同义词-pthread在 Solaris 2 上)和-mthread(针对 i386 和 x86-64 Windows 上的 MinGW 特定线程支持)。我的理解是 GCC 正在尝试转向使用-pthread统一前行。

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

编译时 -pthread 和 -lpthread 之间的区别 的相关文章

  • 如何停止提交给 ExecutorService 的 Callable?

    我正在尝试实现一个示例应用程序来测试Callable and ExecutorService接口 在我的应用程序中我已经声明 ExecutorService exSvc Executors newSingleThreadExecutor T
  • Erlang 如何睡觉(晚上?)

    我想在 Erlang 服务器上每隔几个小时运行一次小型清理过程 我知道计时器模块 我在教程中看到一个示例 使用链式计时器 睡眠命令来等待几天后发生的事件 我觉得这很奇怪 我知道 Erlang 进程与其他语言中的进程相比是独一无二的 但是进程
  • 当底层连接是有状态时如何使用 Apache HttpClient?

    我在谷歌上搜索了很多关于如何使用 HttpClient 进行多线程处理的信息 他们中的大多数人建议使用 ThreadSafeClientConnManager 但我的应用程序必须登录某个主机 登录表单页面 以便 HttpClient 获得底
  • 如何在Spring-Boot中创建DefaultMessageListenerContainer?

    我是 Spring Boot 的新手 并尝试创建 DefaultMessageListenerContainer 以便我可以使用 weblogic workmanager 并以多线程方式运行多个消息侦听器 有人可以提供一些例子吗 到目前为止
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 关于java中的生产者和消费者模式与阻塞队列方法

    我正在研究有关java中线程的生产者和消费者设计模式 最近我在java 5中进行了探索 并介绍了Java 5中BlockingQueue数据结构的介绍 现在它变得更简单了 因为BlockingQueue通过引入阻塞方法隐式地提供了这种控制p
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 为什么 gcc 链接时没有 lpthread 标志?

    我当时正在做一个业余爱好项目 其中互斥体的行为很神秘 我将其归结为这个显然应该陷入僵局的测试用例 include
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • 在GCC中添加父目录的包含路径

    我想将父目录中的文件包含在我正在处理的项目中 所有的头文件都在父目录中 有没有办法在命令行上使用 I 来搜索父目录中的包含而不使用绝对路径 我知道我可以使用 makefile 解决这些问题 并且我可能最终会这样做 但我想知道是否有一个可以使
  • ThreadPool.SetMinThreads 不创建任何新线程

    我想弄清楚到底有什么影响ThreadPool SetMinThreads makes 根据官方文档 https learn microsoft com en us dotnet api system threading threadpool
  • POSIX 线程和 SIGSEGV

    我的系统有 10 多个线程 我有一个信号处理程序来捕获 SIGSEGV 如果一个线程生成 SIGSEGV 该信号是否会发送到所有线程 还是仅发送到生成该信号的线程 SIGSEGV是同步信号 它将被传递到导致无效内存访问的线程 从signal
  • MFC 中位图背景绘制的线程类型

    我有一个 MFC 文档 视图 C 图形应用程序 它将所有绘图都绘制到离屏位图 然后将其复制到 OnDraw 方法中提供的 CDC 指针 在过去的几天里 我一直在寻找将绘图组件放置在单独的工作线程中 这样它就不会停止 GUI 当我执行此操作时
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • numba 函数何时编译?

    我正在研究这个例子 http numba pydata org numba doc 0 15 1 examples html multi threading http numba pydata org numba doc 0 15 1 ex
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式

随机推荐

  • 当我将项目从一个列表框传输到另一个列表框时,如何防止页面回发

    我的应用程序中有两个列表框 单击按钮后我将项目从一个列表框推送到另一个列表框 代码工作正常 但它会导致回发 当我将项目从一个列表框移动到另一个时 整个页面正在再次加载 如何我可以阻止这一切 这将是我的 aspx 页面上的代码 div cla
  • UISearchBar 文本颜色

    浏览文档 我找不到任何可以更改 UISearchBar 颜色的内容 有人知道如何更改吗 没有任何 textColor 属性 Thx 适用于 iOS 7 及更高版本 UITextField appearanceWhenContainedIn
  • SIMD 将 12 位字段解包为 16 位

    我需要从每个 24 位输入中解压缩两个 16 位值 3 字节 gt 4 字节 我已经以幼稚的方式做到了 但我对表现不满意 例如 InBuffer 是 m128i value1 uint16 t InBuffer 0 11 bit range
  • 如何让 ListView 部分标题固定下来

    我的按钮显示在屏幕顶部 使用反应本机可滚动选项卡视图 在按钮下面 我有ListView上面有节标题 当我滚动时 有没有办法让标题粘在选项卡视图的底部边缘 我很难得到ListView的节标题粘在 Facebook TabBar 的底部 默认情
  • CSS 旋转 IE7 和 8

    我还要问另一个问题 所以 CSS Rotate 在 ie9 中可以工作 但在以前的版本中让旋转工作将是我的死 filter progid DXImageTransform Microsoft BasicImage rotation 1 这行
  • 检测视频文件何时真正写入?

    cwac camera 库具有在保存照片之前调用的事件挂钩 Override public void saveImage PictureTransaction xact byte image 我是否只是忽略了这一点 或者是否没有接收器告诉我
  • 为什么 GetWindowThreadProcessId 有时返回 0?

    我使用远程调用在目标地址空间中注入 NET SpyLib 我需要向该窗口的线程发送一条消息 该线程通过以下方式创建了该远程进程GetWindowThreadProcessId 我正在 Windows 7 上工作 不幸的是它大多数时候返回 0
  • Vue-cli 版本 3 BETA webpack 配置

    我正在尝试学习和测试即将推出的 vuejs vue cli beta 3 0 版本 这将是朝着最简单的 webpack 配置迈出的一大步 与此同时 例子很少 作为测试 我尝试从 vue cli v2 webpack dev conf js
  • iPhone Safari 上的 HTML5 - localStorage 存储的数据并不总是持久。为什么?

    我使用 HTML5 的 localStorage 编写了一个简单的 iPhone Web 应用程序 在 2G 设备上的测试表明 尽管会记住打开的 Safari 窗口 但在 Safari 进程被终止后 使用 localStorage 存储的数
  • 检查整数是否太大

    我正在开发一个交换系统 用户正在设置交换的价格和金额 我想确保交换不大于整数最大值 但我遇到了问题 当兑换金额设置为9或更多时 即使我有检查以确保该数字不大于最大值 但它不起作用 我做了一些调试 当将金额设置为 9 而价格为 2 147 4
  • IIS 7.5 无法打开处理程序映射?

    我需要更新 IIS 7 5 上的处理程序映射 以允许将没有扩展名的 URL 路由到应用程序 该应用程序最初是用 ASP NET 2 0 编写的 但后来升级到 ASP NET 3 5 我不知道这是否相关 但我之前更新其他 net 3 5 应用
  • XGBoost 弃用警告 - Sklearn

    我正在使用 XGBoost 中的 XGBClassifier 我收到以下弃用警告 有什么解决方案可以消除这个警告吗 home carnd anaconda3 envs dl lib python3 5 site packages sklea
  • 无法在 ASP.NET 中转换 System.Web.UI.WebControls.GridView 类型的对象

    我编写了一个方法 当单击删除按钮时从我的 asp net Gridview 中删除行 另一种方法在单击编辑按钮时删除行 编辑和删除按钮都是内置 gridview 控件的一部分 但是 当我按下这些按钮 编辑 删除 时 会引发异常 无法将 Sy
  • 针对网站的 http 客户端 head 方法返回 503,但该网站运行良好

    我们使用以下代码从客户端应用程序与我们的网站进行对话 由于某种原因 我们总是得到 503 的状态代码 但是当我们从浏览器手动加载网站时 它只会加载 find 代码可能有什么问题吗 或者服务器端是否有任何特殊设置可能导致此问题 the hea
  • 存储过程 EF 和 NET CORE

    我正在构建一个 WEB API 以在 net core 中生成 JSON 对象 问题是数据集是在 SQL 存储过程 使用动态 SQL 中生成的 我不知道返回的对象的类型 因此我可以将其映射到具体模型 因为输出列根据参数而变化 有谁知道如何在
  • Android - 如果第一次加载 Activity,则阻止 onResume() 函数(不使用 SharedPreferences)

    在我当前的应用程序中 当我第一次加载 Activity 时 会触发 onResume 函数 我调查了活动生命周期 http developer android com reference android app Activity html
  • 如何在NiFi中使用计数器的值

    在 NiFi 1 3 0 中 我创建了一个流程来分割 JSON 文件并使用名称更新计数器filenamecounter这样我就可以将每个拆分保存为不同的文件名 当我查看 NiFi 计数器窗格时 我看到计数器值已更新 但我怎样才能获取这个值呢
  • 如何在 Safari 中应用隐藏/远程源映射?

    我正在尝试调试我的 React 应用程序中的一个问题 该问题仅在 iOS 生产中发生 我想利用隐藏的源映射 这样我就可以在 Safari 中调试应用程序的缩小资源 而无需公开发布注释的源代码 hidden source map 与 sour
  • .Net 4.0 HttpClient 使用情况?

    我在 Net 4 0 中并尝试使用 HttpClient 我看到一些文章说4 0不再支持它 但你仍然可以使用它 我已经包括了System Net Http 程序集 但它不允许我向HttpClient 知道我该如何解决这个问题吗 我已经将发生
  • 编译时 -pthread 和 -lpthread 之间的区别

    有什么区别gcc pthread and gcc lpthread编译多线程程序时使用哪个 pthread告诉编译器链接 pthread 库并配置线程的编译 例如 下面显示了当 pthread选项在我的 Ubuntu 机器上安装的 GCC