笔记3 linux 多线程 条件变量+互斥锁
//cond lock
#include<stdio.h>
#include<unistd.h>
#include<pthread.h> struct test
{
char a[];
char b[];
char c[];
}yb = {"","",""}; static int j=; pthread_mutex_t mutex_1 = PTHREAD_MUTEX_INITIALIZER;;
pthread_cond_t cond_1; void Print1(struct test *arg)
{
while()
{
pthread_mutex_lock(&mutex_1);
pthread_cond_wait(&cond_1,&mutex_1); //等待满足某些要求的消息到达
printf("a=%s,b=%s,c=%s,d=%X,j=%d\n",arg->a,arg->b,arg->c,pthread_self(),j++);
pthread_mutex_unlock(&mutex_1);
pthread_exit((void *)j);
}
printf("Never Coming.\n");
} void Print2(void *arg1)
{
pthread_mutex_lock(&mutex_1);
printf("coming.\n");
pthread_mutex_unlock(&mutex_1);
pthread_cond_signal(&cond_1);
} int main()
{
pthread_t pid1,pid2,pid3,pid4;
void *set;
pthread_cond_init(&cond_1,NULL); pthread_create(&pid1,NULL,&Print1,&yb);
pthread_create(&pid2,NULL,&Print2,&yb);
pthread_create(&pid3,NULL,&Print1,&yb);
pthread_create(&pid4,NULL,&Print2,&yb); pthread_join(pid1,&set);
printf("pid1 exit coed %d\n",(int)set);
pthread_join(pid2,&set);
printf("pid2 exit coed %d\n",(int)set);
pthread_join(pid3,&set);
printf("pid3 exit coed %d\n",(int)set);
pthread_join(pid4,&set);
printf("pid4 exit coed %d\n",(int)set); sleep();
pthread_cond_destroy(&cond_1);
return ;
}
笔记3 linux 多线程 条件变量+互斥锁的更多相关文章
- Linux 多线程条件变量同步
条件变量是线程同步的另一种方式,实际上,条件变量是信号量的底层实现,这也就意味着,使用条件变量可以拥有更大的自由度,同时也就需要更加小心的进行同步操作.条件变量使用的条件本身是需要使用互斥量进行保护的 ...
- linux多线程编程之互斥锁
多线程并行运行,共享同一种互斥资源时,需要上互斥锁来运行,主要是用到pthread_mutex_lock函数和pthread_mutex_unlock函数对线程进行上锁和解锁 下面是一个例子: #in ...
- 笔记整理--Linux多线程
Unix高级环境编程系列笔记 (2013/11/17 14:26:38) Unix高级环境编程系列笔记 出处信息 通过这篇文字,您将能够解答如下问题: 如何来标识一个线程? 如何创建一个新线程? 如何 ...
- Linux Qt使用POSIX多线程条件变量、互斥锁(量)
今天团建,但是文章也要写.酒要喝好,文要写美,方为我辈程序员的全才之路.嘎嘎 之前一直在看POSIX的多线程编程,上个周末结合自己的理解,写了一个基于Qt的用条件变量同步线程的例子.故此来和大家一起分 ...
- 【Linux C 多线程编程】互斥锁与条件变量
一.互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问. 1) 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态 ...
- linux io 学习笔记(02)---条件变量,管道,信号
条件变量的工作原理:对当前不访问共享资源的任务,直接执行睡眠处理,如果此时需要某个任务访问资源,直接将该任务唤醒.条件变量类似异步通信,操作的核心:睡眠.唤醒. 1.pthread_cond_t 定 ...
- Linux 线程 条件变量
一:条件变量 直接上最基本的两个函数,先抓主要矛盾: //等待条件 int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex ...
- C++11并发——多线程条件变量std::condition_variable(四)
https://www.jianshu.com/p/a31d4fb5594f https://blog.csdn.net/y396397735/article/details/81272752 htt ...
- Linux:条件变量
条件变量: 条件变量本身不是锁!但它也可以造成线程阻塞.通常与互斥锁配合使用.给多线程提供一个会合的场所. 主要应用函数: pthread_cond_init函数 pthrea ...
随机推荐
- CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响
---恢复内容开始--- 一.width:auto和width:100%的区别 1.width:100%的作用是占满它的参考元素的宽度.(一般情况下参考元素 == 父级元素,这里写成参考元素而不是 ...
- HTML基础进阶
[toc] HTML表单 form标签 <form> 标签代表一个表单,表单用于向服务器传输数据. 标签能够包含 <input> ,可以是文本字段,复选框,单选框或提交按钮等. ...
- Web 学习笔记 - 网络安全
前言 作为 前端开发者,了解一点 Web 安全方面的基本知识是有很必要的,未必就要深入理解.本文主要介绍常见的网络攻击类型,不作深入探讨. 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描.弱口 ...
- angularjs select标签中参数的传递
今天做的一个demo中需要一个下拉选择框,并根据所选择的内容向服务器发送请求. 首先百度了一下angularjs关于select的使用,一种采用ng-repeat的方式. <select ng- ...
- OpenCms模块创建图解
登录OpenCms后,切换到"管理(Administration)"视图,点击"模块管理",这时窗口显示已安装模块的列表. 确定当前不在"online ...
- BigDecimal精确计算及陷阱
BigDecimal通常在涉及到精确计算的时候会用到,下面是自己多次错误使用BigDecimal的总结. 结论: BigDecimal初始化小数时,尽量用字符串形式,例如new BigDecimal( ...
- windows下tomcat zip解压版安装方法
下面记录一下在win7(32位)系统下,安装zip解压版的方法: 一.下载zip压缩包 地址:http://tomcat.apache.org/download-80.cgi 二.解压 我把解压包解压 ...
- jQuery绑定事物处理器
绑定与移除1..bind() 绑定事件可以有2个或者3个参数:第一个参数为事件类型 第二个参数为处理函数 第三个为布尔类型 on()事件代替2..delegate() 事件委托,三个参数,第一个为选择 ...
- hdu3713 Double Maze
Problem Description Unlike single maze, double maze requires a common sequence of commands to solve ...
- 深入理解 JavaScript 中的 replace 方法(转)
replace方法是属于String对象的,可用于替换字符串. 简单介绍: StringObject.replace(searchValue,replaceValue) StringObject:字符 ...