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

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

1.什么是互斥?

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

2.什么是同步?

  1. 同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。
  2. 在大多数情况下,同步已经实现了互斥, 特别是所有写入资源的情况必定是互斥的。
  3. 少数情况是指可以允许多个访问者同时访问资源

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

发布了142 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lqy971966/article/details/104527818