码迷,mamicode.com
首页 > 编程语言 > 详细

C#学习笔记---线程同步:互斥量、信号量、读写锁、条件变量

时间:2017-01-09 15:13:31      阅读:1892      评论:0      收藏:0      [点我收藏+]

标签:变量   com   学习   加锁   本质   arch   target   运行   map   

http://www.cnblogs.com/maxupeng/archive/2011/07/21/2112282.html

一、互斥量(mutex)

  互斥量本质上是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。

  对互斥量进行加锁以后,任何其它试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为运行状态的线程可以对互斥量加锁,其它线程将会看到互斥锁依然被锁住,只能回去再次等待它重新变为可用。在这种情况下,每次只有一个线程可以向前执行。

二、信号量(semaphore)

  互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。

三、读写锁

  读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态要么是不加锁状态,而且一次只有一个线程可以对其加锁。

四、条件变量(condition)和监视器(monitor)

  条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。

C#学习笔记---线程同步:互斥量、信号量、读写锁、条件变量

标签:变量   com   学习   加锁   本质   arch   target   运行   map   

原文地址:http://www.cnblogs.com/changrulin/p/6265298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!