linux c多线程编程实例代码
直接看代码吧,代码里有注释
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define MAX 3
int number =0;
pthread_t id[2];
pthread_mutex_t mut; //初始化静态互斥锁
void thread1(void)
{
int i;
printf("Hello,I am pthread1!\n");
for (i=0; i<MAX; i++)
{
pthread_mutex_lock(&mut); //此处上锁,保证number的唯一性
number ++;
printf("Thread1:number = %d\n",number);
pthread_mutex_unlock(&mut);
sleep(1); //linux c下 sleep(minute),里面变量单位是分钟
}
pthread_exit(NULL); //线程通过执行此函数,终止执行。返回是一个空指针类型
}
void thread2(void)
{
int j;
printf("Hello,I'm pthread2\n");
for(j=0; j<MAX; j++)
{
pthread_mutex_lock(&mut);
number ++;
printf("Thread2:number = %d\n",number);
pthread_mutex_unlock(&mut);
sleep(1);
}
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(&id, 0, sizeof(id));
if(temp = pthread_create(&id[0], NULL, (void *)thread1, NULL)!= 0)
//参数:线程标识符指针 线程属性 线程运行函数起始地址 运行函数属性
//创建成功返回 0
printf("Thread 1 fail to create!\n");
else
printf("Thread 1 created\n");
if(temp = pthread_create(&id[1], NULL, (void *)thread2, NULL)!= 0)
printf("Thread 2 fail to create!\n");
else
printf("Thread 2 created!\n");
}
void thread_wait()
{
if(id[0] != 0)
{
pthread_join(id[0], NULL); //等待线程结束,使用此函数对创建的线程资源回收
printf("Thread1 completed!\n");
}
if(id[1] != 0)
{
pthread_join(id[1], NULL);
printf("Thread2 completed!\n");
}
}
int main(void)
{
int i,ret1,ret2;
pthread_mutex_init(&mut, NULL); //动态互斥锁
printf("Main fuction,creating thread...\n");
thread_create();
printf("Main fuction, waiting for the pthread end!\n");
thread_wait();
return (0);
}
上一篇:c++ dynamic_cast与static_cast使用方法示例
栏 目:C语言
下一篇:C语言可变参数函数详解示例
本文标题:linux c多线程编程实例代码
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/3910.html
您可能感兴趣的文章
- 01-10如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方
- 01-10如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方
- 01-10深入解析Linux下\r\n的问题
- 01-10Linux线程管理必备:解析互斥量与条件变量的详解
- 01-10深入分析父子线程、进程终止顺序不同产生的结果
- 01-10Linux C 获取进程退出值的实现代码
- 01-10解析Linux下的时间函数:设置以及获取时间的方法
- 01-10深入探讨linux下进程的最大线程数、进程最大数、进程打开的文
- 01-10基于linux下获取时间函数的详解
- 01-10linux c 查找使用库的cflags与libs的方法详解
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法实例总结
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 04-02jquery与jsp,用jquery
- 01-11ajax实现页面的局部加载
- 01-10SublimeText编译C开发环境设置