多线程(2)什么是:互斥,同步,条件变量,原子操作?

1.什么是互斥?

互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。
但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

1.1 临界区 竞争条件

临界区 - 也称为临界段,就是访问和操作共享数据的代码段。
竞争条件 - 多个执行线程处于同一个临界区。

2.什么是同步?

安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序
目的:避免并发和防止竞争条件

3.什么是原子/原子操作?

  1. 定义:
    原子(atomic)本意是“不能被进一步分割的最小粒子”,
    原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。
  2. 原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。这种操作一旦开始,就一直运行到结束

4.什么是条件变量?

  1. 条件变量作为一种同步手段,作用类似于一个栅栏。

  2. 线程有两种操作:
    2.1 首先线程可以等待条件变量,一个条件变量可以被多个线程等待;
    2.2 其次可以唤醒条件变量,此时某个或所有等待此条件变量的线程都会被唤醒并继续支持。

  3. 也就是说使用条件变量可以让许多线程一起等待某个事件发生,
    当事件发生时(条件变量被唤醒),所有线程可以一起恢复执行。

参考

http://www.blogjava.net/fhtdy2004/archive/2009/07/05/285519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值