线程同步1 ------ 互斥锁 ------一个更加典型的例子
来源:互联网 发布:淘宝怎样装修商品 编辑:程序博客网 时间:2024/06/15 15:11
上一篇博文里,举了一个简单的应用共享锁的例子。本篇博文将介绍一个稍微更加复杂点的例子。
有一个全局变量数组out,包含100个元素,所有元素初始化为0。然后开启2个子线程同时对数组out进行赋值操作。在此过程,应该启用共享锁对赋值代码进行同步。具体代码如下:
#include <stdio.h>#include <pthread.h>pthread_mutex_t number_mutex;//out数组是全局变量,100个元素全部初始化为0,2个线程共同为out数组赋值int out[100];//线程1void thread1(){ int i; while(1){ printf("Thread 1 operated.\n"); pthread_mutex_lock(&number_mutex); for(i=0;i<100;i++){ if(out[i]==0){//尚未赋值的元素,则将其赋值 out[i]=1111; break; } } //如果最后一个元素都已经被赋值了,则解锁,之后退出本线程 if(out[99]!=0) { pthread_mutex_unlock(&number_mutex); return; } pthread_mutex_unlock(&number_mutex); }}//线程2void thread2(){ int i; while(1){ printf("Thread 2 operated.\n"); pthread_mutex_lock(&number_mutex); for(i=0;i<100;i++){ if(out[i]==0){ out[i]=2222; break; } } if(out[99]!=0) { pthread_mutex_unlock(&number_mutex); return; } pthread_mutex_unlock(&number_mutex); }}main(){//对out数组的100个元素赋初值 int i; for(i=0;i<100;i++){ out[i]=0; } pthread_t thid1,thid2; printf("This is Main Thread.\n"); pthread_mutex_init(&number_mutex,NULL); pthread_create(&thid1,NULL,thread1,NULL); pthread_create(&thid2,NULL,thread2,NULL); int status1,status2; pthread_join(thid1,(void*)&status1); pthread_join(thid2,(void*)&status2); pthread_mutex_destroy(&number_mutex);//输出数组100个元素的新值 for(i=0;i<100;i++){ printf("%d, ",out[i]); } printf("\nMain Thread exit\n");}
运行结果如下:
从运行情况看,2个线程交替运行,将100个数组元素全部赋成了新值。
阅读全文
0 0
- 线程同步1 ------ 互斥锁 ------一个更加典型的例子
- 一个典型的例子
- C#中的一个线程同步的例子
- 一个黑洞的典型例子
- 一个更加明显的rownum的例子
- 线程同步的例子
- 请给一个java线程同步的例子
- 一个典型的双缓冲的例子
- 一个典型的Hibernate实体操作例子
- tomcat、servlet、jsp的一个典型例子
- Java线程同步的例子
- 实现线程同步的例子
- 线程同步的小例子
- 线程同步的小例子(两个线程对一个List进行写操作)
- 最简单的线程同步的例子
- 关于线程同步的实践的例子
- 一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。
- 本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥
- MongoDB shell 删除不了的解决方法
- 纯jQuery实现网页轮播图
- Latex排版系统使用
- SpringMVC入门小例子——表单提交
- Android如何创建一个项目
- 线程同步1 ------ 互斥锁 ------一个更加典型的例子
- 什么是光学生物传感器存储?第2部分---凯利讯半导体
- 算法导论
- MySql 5.7.20安装
- linux xargs命令的使用及其与exec、管道的区别
- lakeshore
- 【大神谈】大神谈无线传输方案选择
- oracle 数据库创建表空间和用户及用户间赋权限
- 衣服合不合身,试了才知道-通过PowerBi样本数据了解大体功能