基于linux体统多线程代码,linux c多线程编程示例代码

本文探讨了如何在C/C++中使用静态和动态互斥锁(mutex)实现线程间的数据同步,通过thread1和thread2的示例展示了如何保证number变量的唯一性,防止竞态条件。主要涉及了pthread_create, mutex_lock, mutex_unlock等关键函数的运用。
摘要由CSDN通过智能技术生成

6a35f96ea5cb0c05817a7f0b789872fb.gif

#include

#include

#include

#include

#include

#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

{

938f562e300ee56e22633b438f105683.png

pthread_mutex_lock(&mut); //此处上锁c 多线程控制控件实例,保证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

{

pthread_mutex_lock(&mut);

v2-a653fbcd7d402bd22cd88ad370ce5c58_b.jpg

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");

09562q1j-1.gif

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); //等待句柄结束c 多线程控制控件实例,使用此变量对构建的线程资源回收

printf("Thread1 completed!\n");

}

if(id[1] != 0)

c956e282443b447a6202a65f7b654c87.png

{

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);

}

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-124219-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值