在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性。 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程,类似信号。 场景:T-DAY展会排队参观/生产者消费者模型 条件变量是什么? 是一种同步机制,一个线 ...
分类:
编程语言 时间:
2019-11-12 16:04:29
阅读次数:
98
threading在低级的_thread模块上构建了更高级的线程接口。 threading模块基于Java线程模型设计。不过Java中锁和条件变量是每个对象的基本行为,在python中却是单独的对象。python的Thread类行为是Java的Thread类行为的子集,目前尚不支持优先级、线程组,线 ...
分类:
编程语言 时间:
2019-11-11 12:55:30
阅读次数:
75
https://www.youtube.com/watch?v=13dFggo4t_I视频地址 实例1 考虑这样一个场景:存在一个全局队列deque,线程A向deque中推入数据(写),线程B从deque中取出数据(读). deque这个资源对象就需要用mutex做访问控制,代码如下: 线程t1中, ...
分类:
编程语言 时间:
2019-11-11 09:38:34
阅读次数:
91
1.认识线程和进程: 1.1什么是线程:线程是系统执行任务调度的最小单位,一个进程可以只包含一个线程此时线程也可以理解为进程,当然也可以拥有多个线程,线程之间可以实现资源共享以及通讯什么是进程:系统资源分配的最小单位线程和进程区别:实际上,进程不是同时运行的,对于一个 CPU 而言,某个时间段只能运 ...
分类:
编程语言 时间:
2019-10-29 12:06:01
阅读次数:
101
编写Shell Script的步骤 1、vim xxx.sh 2、编写脚本内容 3、chmod u+x xxx.sh 4、/xxx.sh # 注释 #! 选择解释器 echo 输出 相当于printf echo自动换行且不支持转义 -n 不换行 -e 支持转义 read 输入,后面可接多个变量 执行 ...
分类:
系统相关 时间:
2019-10-19 11:35:24
阅读次数:
84
互斥锁 互斥锁的特性: 1. 原子性:当有一个线程成功拿到了这个锁,其他线程都无法在相同的时间拿到这个锁 2. 唯一性:在一个线程拿到锁的这段时间,只有当这个线程把锁释放掉,其他的线程才有可能拿到 3. 非繁忙等待性:如果一个线程已经锁定了一个互斥量,第二个线程又视图去拿到这个锁的前线,则第二个锁将 ...
分类:
其他好文 时间:
2019-10-15 21:21:06
阅读次数:
124
基础概念 一、进程、程序和线程 程序:程序只是一堆代码而已 进程:指的是程序的运行过程,是对正在运行程序的一个抽象。进程是一个资源单位 线程:每个进程有一个地址空间,而且默认就有一个控制线程。线程才是cpu上的执行单位 二、并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是 ...
分类:
编程语言 时间:
2019-10-02 21:00:50
阅读次数:
132
初始化条件变量 函数返回时,创建的条件变量保存在cv所指向的内存中,可以用宏PTHREAD_COND_INITIALIZER来初始化条件变量。值得注意的是不能使用多个线程初始化同一个条件变量,当一个线程要使用条件变量的时候确保它是未被使用的。 条件变量的销毁 条件变量的使用: 使用方式如下: 为什么 ...
分类:
编程语言 时间:
2019-09-30 16:50:40
阅读次数:
108
本文链接:https://blog.csdn.net/xhjcehust/article/details/45844901笔者之前照着通用写法练手写过一个小的线程池版本,最近几天复习了一下,发现大多数线程池实现都离不开锁的使用,如互斥量pthread_mutex*结合条件变量pthread_cond ...
分类:
编程语言 时间:
2019-09-13 13:12:34
阅读次数:
138
闲的蛋疼做了一个6.828的homework 就是这里 https://pdos.csail.mit.edu/6.828/2018/homework/barrier.html 就是说需要我们利用给的一个mutex,一个条件变量,实现一个barrier. 感觉barrier就是书上讲的那种sleep ...
分类:
其他好文 时间:
2019-09-10 10:23:35
阅读次数:
91