LINUX学习之 只用互斥锁实现两个进程同步
来源:互联网 发布:网络错误e404 编辑:程序博客网 时间:2024/06/01 20:13
程序功能:
A线程进行从1到100的累加,累加结果放在全局变量C中。
B线程根据A的实时运算结果,检测到累加值可以 被10整除时马上输出此时的C值。
程序思路:
设置一个全局变量F ,县城B通过检测F的值来判断是否输出当前C值,线程A通过检测F的值来判断是否继续累加,达到线程同步的效果。
在AB线程分别判断F值的语句前后加上P操作和V操作,也就是加锁和释放锁,来达到线程互斥。
程序代码:
#include<pthread.h>#include<stdio.h>int c=0;int f=0;pthread_mutex_t t;void f1(void *arg){ int i=1; while(i<=40){pthread_mutex_lock(&t);if(f==0) {c+=i;i++;printf("%d \n",c);if(c%10==0){ f=1;} }pthread_mutex_unlock(&t);}}void f2(void *arg){ while(1){if(f==1){pthread_mutex_lock(&t);f=0;printf("-------%d \n",c);pthread_mutex_unlock(&t);}}}int main(){pthread_t a;pthread_t b;pthread_mutex_init(&t,NULL);pthread_create(&a,NULL,f1,NULL);pthread_create(&b,NULL,f2,NULL);pthread_join(a,0);pthread_join(b,0);}
0 0
- LINUX学习之 只用互斥锁实现两个进程同步
- linux c之通过管道父子进程实现同步通信
- Linux进程通信之同步进程
- linux rsync实现两个目录的同步
- Linux学习之进程
- linux 学习之 进程
- LINUX 实现两个进程之间的通信
- Linux进程同步之POSIX信号量
- Linux进程同步之System V 信号量
- Linux进程同步之POSIX信号量
- Linux进程同步之POSIX信号量
- Linux进程同步之System V 信号量
- Linux进程同步之POSIX信号量
- Linux进程同步之记录锁
- linux内核学习之同步
- linux学习之磁盘同步
- linux学习之同步锁
- 只用两个for循环同时实现升降序输出
- 打印数字图形
- Linux环境进程间通信(二): 信号(下)
- IO
- 快速排序和归并排序比较
- mu4e定时检查邮件和播放声音提醒
- LINUX学习之 只用互斥锁实现两个进程同步
- C++对象模型
- git简单使用
- 第14周项目5-体会棋盘游戏中的数据存储
- sublime text 3 快捷键大全
- QT(1)-Qt Creator 编写多窗口程序
- 多边形画圆 vc6.0+opengl
- tiles框架学习
- Subqueries