linux编译有线程的文件要加什么参数,Linux多线程实例,在编译中要加 -lpthread参数...
问题:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
问题解决:
在编译中要加 -lpthread参数
gcc thread.c -o thread -lpthread�
/*thread_example.c : c multiple thread programming in linux
*author : falcon
*E-mail : tunzhj03@st.lzu.edu.cn
*/
#include
#include
#include
#include
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0,i;
void *thread1()
{
printf ("thread1 : I'm thread 1/n");
for (i = 0; i < MAX; i++)
{
printf("thread1 : number = %d/n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(1);
}
printf("thread1 :主函数在等我完成任务吗?/n");
pthread_exit(NULL);
}
void *thread2()
{
printf("thread2 : I'm thread 2/n");
for (i = 0; i < MAX; i++)
{
printf("thread2 : number = %d/n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(1);
}
printf("thread2 :主函数在等我完成任务吗?/n");
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(&thread, 0, sizeof(thread)); //comment1
/*创建线程*/
if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
printf("线程1创建失败!/n");
else
printf("线程1被创建/n");
if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("线程2创建失败");
else
printf("线程2被创建/n");
}
void thread_wait(void)
{
/*等待线程结束*/
if(thread[0] !=0) { //comment4
pthread_join(thread[0],NULL);
printf("线程1已经结束/n");
}
if(thread[1] !=0) { //comment5
pthread_join(thread[1],NULL);
printf("线程2已经结束/n");
}
}
int main()
{
/*用默认属性初始化互斥锁*/
pthread_mutex_init(&mut,NULL);
printf("我是主函数哦,我正在创建线程,呵呵/n");
thread_create();
printf("我是主函数哦,我正在等待线程完成任务阿,呵呵/n");
thread_wait();
return 0;
}
linux编译有线程的文件要加什么参数,Linux多线程实例,在编译中要加 -lpthread参数...相关推荐
- linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep
linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...
- linux怎么创建牡蛎_文件amp;目录小技巧 | Linux后门系列
0x01 Linux 目录技巧 我们都知道 Windows 下文件和文件夹命名是有很多规则和限制的,但是可以通过一些程序来绕过限制,今天我们来看看 Linux 有哪些有趣的规则 参考 https:// ...
- 【Linux】~ 如何将本地文件(windows)复制(传输)到虚拟机中
目录: 0. 前言 1. 具体操作 2. scp指令 2.1 作用 2.2 举例说明 2.3 参数说明 参考文献 声明 0. 前言 很多时候对于一个新手来说,对刚开始使用虚拟机不熟悉,想要将我们本地的 ...
- linux如何给windows传文件,教你如何实现Linux与windows文件互传
一.概述 本文讲述了在Linux主机与windows主机之间如何互传文件的方法.因为有的时候,linux主机中的一些文件可能会在windows环境下用到.例如在linux主机中抓了一些图片,想把它们传 ...
- linux 恢复已删除的文件,恢复已删除的Linux文件
恢复已删除的Linux文件 发布时间:2008-09-08 17:09:31 作者:佚名 我要评论 作为一个多用户.多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的.尽管删除命令只 ...
- linux解压完的文件在哪里,如何在 Linux 下解压 Zip 文件
先决条件:安装了unzip 命令:sudo apt install unzip 确认你的系统中安装了unzip 就可以通过unzip来解压 zip 归档文件 在放 zip 文件的目录,用下面的命令: ...
- linux 已打开文件图标管理,Linux_没有启动图标利用Linux命令在终端打开文件, 在Linux系统中,打开一个 - phpStudy...
没有启动图标利用Linux命令在终端打开文件 在Linux系统中,打开一个文件很简单,只要有启动图标就可以了,但是如果没有启动图标的话要如何在终端下打开文件呢?使用命令就能很好的解决这个问题,下面小编 ...
- linux下怎么看影子文件,IT外包桌面解决方案--Linux怎么查找影子文件并进入?
与众不同的服务是因为有心 所有艾锑人可能都知道艾锑无限为客户提供三种与客户接触的方式,一种是产品,一种是技术,还有一种是服务,那这三种所谓的方式构建起一个三角形,这种稳固的体系,看起来还不错,但我们细 ...
- html5 循环加载图片,解决vue的 v-for 循环中图片加载路径问题
先看一下产品需求,如下图所示, 产品要求图片和它的名称一一对应,本来是非常简单的需求,后台直接返回图片路径和名称,前台直接读取就可以了,但是我们没有存储图片的服务器,再加上是一个实验性的需求,图片需要 ...
最新文章
- Entity Framework应用:根据实体的EntityState状态实现增删改查
- python中tornado的第一个例子
- python中if else语句用法_讲解Python中if语句的嵌套用法
- “智慧城市”建设中的金融力量
- JAVA card 应用开发(二) 在项目添加APPLET
- 中间代码生成器-5-编译原理
- UVA 307 Sticks
- 公用技术——设计模式19——行为型模式——备忘录模式——待补充
- CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
- uibinder表单提交_使用UIBinder的GWT自定义按钮
- .net core精彩实例分享 -- LINQ
- C++中static的用法
- U盘快捷方式病毒修复
- 深度学习模型提升性能的策略
- 注意int类型数据相加的溢出
- Python之模块pandas基础知识
- django和mezzanine搭建博客小站1
- Android 部分手机拍照后获取的图片被旋转
- 作为一名非Commiter,如何向开源社区提交自己的代码
- 【Java面试】什么是字节码?采用字节码的好处是什么?
热门文章
- CodeForces - 985E Pencils and Boxes
- Elasticsearch(二):理解index, Document, Field
- 引用 《大明宫词》经典台词89句
- sqlserver 中 @@rowcount的简单用法
- Spark+Scala建设数仓和数据分析
- MCAFee(麦咖啡)进程解释
- 简易的网页小游戏之接星星,HTML+JavaScript+css(一丢丢)
- 拖拽或点击上传(支持苹果safari浏览器)
- drawboard pdf拆分文件_请收藏!这是一份最全的PDF问题解决方案。
- CC2640R2F学习笔记(8)——Watchdog看门狗使用