
多线程
Glemontree_
热爱技术,热爱开源
展开
-
[多线程] x=y的原子性
x=y的原子性一、原子性介绍所谓的原子性是指该操作不能再继续划分为更小的操作,在多线程中原子操作是一个很重要的概念,决定了该操作是否需要同步机制来进行保护。二、x=y操作的原子性在X86中,x=y包含两个操作:读取y至寄存器,然后将该值写入x,其中读取y的值至寄存器中是原子的,将值写入x也是原子的,但是这里需要格外注意的是两个原子操作的组合不一定是原子操作,如果在这两步骤之间有另外一个线程更改了y的原创 2017-09-08 18:30:53 · 1307 阅读 · 0 评论 -
[多线程] 互斥对象和锁
互斥对象和锁锁互斥对象的主要操作有两个,即加锁(lock)和解锁(unlock)。当一个线程对互斥对象进行lock操作并成功获得这个互斥对象的所有权,在此线程对此对象unlock前,其他线程对这个互斥对象的lock操作都会被阻塞。多个互斥对象加锁有些倾向需要对多个互斥对象进行加锁,考虑下面的代码:std::mutex mt1, mt2;{ std::lock_guard<std::mute原创 2017-09-08 18:31:27 · 491 阅读 · 0 评论 -
[多线程] 互斥量和临界区的区别
互斥量和临界区的区别通常有4种进程或线程同步互斥的控制方法,它们是:临界区互斥量信号量事件其中临界区通过对多线程的串行化来访问公共资源或一段代码,速度快;互斥量为协调共同对一个共享资源的访问而设计的;信号量为控制一个具有有限数量用户资源而设计;事件则用来线程有一些事件已经发生,从而启动后继任务的开始。今天我们主要对临界区和互斥量的异同点进行介绍,因为这两个实在太像了。临界区临界区用来保证在原创 2017-09-08 18:32:18 · 1814 阅读 · 0 评论