为什么使用 -lpthread 隐式声明 pthread_yield 而使用 -pthread 则一切正常?

2023-11-20

我在 CentOS7 中使用 gcc 编译此代码 main.c:

#include <pthread.h>
void* mystart(void* arg)
{
    pthread_yield();
    return(0);
}
int main(void)
{
    pthread_t pid;
    pthread_create(&pid, 0, mystart, 0);
    return(0);
}

第一次编译:gcc -Wall -g main.c -pthread -o a.out
一切都好。

第二次编译:gcc -Wall -g main.c -lpthread -o a.out
Gives

警告:函数“pthread_yield”的隐式声明 [-Wimplicit-function-declaration]

  1. 可以2号吗a.out仍然运行正确吗?
  2. 如何修复警告而不-pthread? Is sched_yield另一种产生 pthread 的方法?

pthread_yield()是一个非标准函数,通常通过定义来启用

#define _GNU_SOURCE

虽然你应该使用-pthread对于编译,我希望你会得到同样的警告both汇编(除非-pthread定义_GNU_SOURCE可能是这种情况)。

正确的修复方法是not使用非标准函数pthread_yield()并使用 POSIX 函数sched_yield()相反,通过包括#include <sched.h>.

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

为什么使用 -lpthread 隐式声明 pthread_yield 而使用 -pthread 则一切正常? 的相关文章

随机推荐

  • Rails 7 资产管道 SassC::SyntaxError 与 Tailwind

    我正在努力将一个新的 Rails 7 项目部署到生产环境 尝试使用 Heroku 和 Render com 但在构建过程中出现以下错误 tailwindcss i app assets stylesheets application tai
  • 如何从 loadContent() 将 html 和 javascript 加载到 webengine 中?

    有人可以提供一些关于如何从 loadContent 将以下内容加载到 webviewer 上的建议吗 http jsbin com aqupun 6 edit 我试图做这样的事情 但它似乎不起作用 谢谢 Scanner sc1 new Sc
  • 在特定上下文中调用 eval()

    我有以下 javaScript 类 A function a function eval A prototype b function arg1 arg2 do something 现在我们假设在 eval 中我传递的字符串包含使用一些参数
  • 无法使用 NetBeans 8.1 的 Gradle 支持插件构建 Gradle 项目

    我开始了一个学习项目来熟悉 Gradle Spring 和 Vaadin 到目前为止 我在一些 Spring 指南的帮助下成功创建了基本的 CRUD 功能 现在我想将该项目导入 NetBeans 我安装了Gradle 支持插件NetBean
  • 有没有办法省略 C 预处理器输出顶部的定义(行标记)?

    如果我处理以下内容test def输入文件与gcc C x c E test def define TEST foo int TEST 我希望输出只是 int foo 相反 我得到 1 test def 1
  • 存储静态类的内存分配 C#

    我读过一篇文章 它让我对内存分配感到困惑 其中指出 单例对象存储在堆上 而静态类则存储在堆上 存储在堆栈中 链接是 http www dotnetjalps com 2013 06 Static vs Singleton in Csharp
  • Woocommerce Rest API v2 中用户登录/注册的端点

    我已在 Woocommerce REST API 文档中完全搜索了用户登录 注册的端点 但无法找到它 谁能给我提供端点及其文档的链接 您可以通过多种方式实现这一目标 第一种方法是 它不仅适用于 WooCommerce 也适用于所有 Word
  • 使用 ADO.NET 实体框架从表中存在的值生成枚举

    我的要求是根据数据库表中存在的值创建一个枚举 我正在使用 ADO NET 实体框架模型 edmx 文件 你们中的任何一位都可以帮助我吗 使用 T4 模板可能要容易得多 这是一篇关于入门的非常好的文章 我下面的示例使用直接 SQL 连接 但正
  • 如何实现 ag-grid 行编辑的验证规则

    我目前有一个带有内联编辑的 html 表 它使用普通的 Angular Reactive Forms 包括很多验证规则 var formArray new FormArray this items map createItemFormGro
  • 如何将对象上下文传递给 jQuery.ajax JSONP 回调?

    当 ajax 提供程序预定义其回调时 我在将 javascript 对象上下文传递到 JSONP ajax 请求的回调处理程序时遇到问题 Flickr 是服务提供商 我将举一个简化的例子 function Person anId this
  • 无法对基本类型 char 调用 equals(char)

    我是编程新手 并试图完成一个基本的猜谜游戏 但我遇到了这个错误 需要一些帮助 因为我已将 猜测 设置为char 然后想将它与字符数组进行比较 但尝试了几种不同的方法 但还没有任何乐趣 它给了我底部 if 语句的错误 其中包含 guess e
  • 导入语句中的“show”和“as”有什么区别?

    有什么区别show and as在进口声明中 例如 有什么区别 import dart convert show JSON and import package google maps google maps dart as GoogleM
  • 获取每个二维数组的累积计数

    我有一般数据 例如字符串 np random seed 343 arr np sort np random randint 5 size 10 10 axis 1 astype str print arr 0 1 1 2 2 3 3 4 4
  • Xcode 6 中未创建 Swift to Objective-C 标头

    我最近一直致力于将 Swift 添加到现有项目中 以便以现实世界的方式进行尝试 将 Swift 源文件添加到项目后 我在获取 桥接头 即 Objective C 到 Swift 方面没有任何问题 But the Swift h应该公开 Sw
  • 没有记录的 Linq to Sql Sum

    我正在创建一种收集整个月累计总数的方法 问题是给定月份的某些项目可能不收费 因此不会返回任何行 我可以看到在没有数据的情况下这会如何出错 double fuelCost double from a in db EquipmentFuelLo
  • Django 脆皮表单不加载 CSS

    我在SO上看到这个问题 Django Cripy Forms 找不到 CSS 并遵循已接受答案中的所有建议 即 crispy forms 列在 INSTALLED APPS 下 我没有运行生产服务器 所以我不确定是否应用了collectst
  • 如何通过索引提取c#中字符串中的特定字符[重复]

    这个问题在这里已经有答案了 在 C 中 字符串就像数组 当您编写 str i 时 您可以在其中访问数组的 i 1 元素 类似于 C 中的内容 我不需要 indexOf 方法 因为这是不同的 我需要一些东西通过索引将字符带入字符串中 是的 您
  • 启动时将参数传递给 pyqt 线程

    当线程启动 start 时 有什么方法可以将参数传递给 QThread 吗 我在 stackoverflow 中找到了一个使用 pyqt 线程的示例 但我想知道如何传递参数 以防我希望工作线程处理我传递给其 run 函数的数据 我参考的帖子
  • 在应用程序中将 Youtube 视频保存到 iPhone

    在应用程序中播放 Youtube 视频非常简单 并且有详细的文档记录 这样做有两个问题 关闭 Youtube 播放器后 如果用户想再次播放 则必须再次等待在线流媒体 无法离线播放 在家加载视频以便在路上观看 有没有人有代码 下载 Youtu
  • 为什么使用 -lpthread 隐式声明 pthread_yield 而使用 -pthread 则一切正常?

    我在 CentOS7 中使用 gcc 编译此代码 main c include