主要介绍一下Linux下的互斥与阻塞方面的知识: 1. 原子操作 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 常用原子操作函数举例: atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0 atomic_read(atomic_t *v); //返回 ...
分类:
系统相关 时间:
2016-07-03 13:01:04
阅读次数:
277
8. 告别Lock 不是一直说Lock比较麻烦危险吗,那就不要好了。其实有一个Lock free的方法。 首先引入一个概念——原子变量。在这种变量上的操作是原子操作(atomic operation)。原子操作就是说这个操作要么都完成,要么都不完成,部分完成是不行的。就像物理化学中的原子一样,借用不 ...
分类:
编程语言 时间:
2016-03-24 10:20:48
阅读次数:
208
第二章:线程安全性2.1什么是线程安全性可以被多个线程调用,并且在线程之间不会出现错误的交互方法内的局部变量不需要保护,因为它存储在栈中,是每个线程独有的2.2原子性一个共享变量可以定义为原子变量:atomic多个共享变量时,之间可能存在某种依赖关系,分别定义为原子变..
分类:
编程语言 时间:
2015-12-06 01:57:06
阅读次数:
172
1 、控制情况主要有:2. 独享设备——一次只允许一个用户的一个进程访问(代码参考ldd3)scull 的驱动程序: 需要一个原子变量atomic_t//scull.h#ifndef _SCULL_H_#define _SCULL_H_#include /* needed for the _IOW....
分类:
其他好文 时间:
2015-10-03 10:39:20
阅读次数:
323
http://ifeve.com/java-atomic/Java中的Atomic包使用指南本文首发于并发网,作者:方腾飞引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原 子变量的底层使用了处理器提供的原子...
分类:
编程语言 时间:
2015-09-30 10:55:05
阅读次数:
219
Atomic简介
Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个...
分类:
其他好文 时间:
2015-07-31 16:13:24
阅读次数:
200
c++11 多线程 – 基本使用
前言:这篇文章仅针对没有使用过c++11线程库的童鞋来快速入门,也是自己的一个简单记录,内容比较基础。
-1.线程的基本使用
-2.互斥量
-3.条件变量
-4.原子变量1.线程的基本使用代码:#include
#include
#include
#include
#incl...
分类:
编程语言 时间:
2015-07-17 09:50:23
阅读次数:
137
摘要:并发控制,是多任务操作系统必须面临和解决的一个问题。并发与互斥,主要是用于保护临界资源,如果不站在操作系统进程调度的角度,就很难理解并发与互斥的概念和应用。无论是抢占式操作系统,还是分时操作系统,对于临界资源的保护,都必须采用互斥的机制。Linux内核中,有多种并发控制的机制:自旋锁、原子变量、信号量、读写锁等等。不同的并发机制对应于不同的应用场合,比如说,自旋锁可以应用到中断处理函数中,信号量则不可以。本文主要从一个globalmem_lock例子来阐述信号量的使用。注:该例子取自《Linux设备驱...
分类:
系统相关 时间:
2015-06-16 09:17:54
阅读次数:
263
前些天有朋友问我,经常在代码中看到Atomic开头的类,不明白是什么意思。
这里我们就从AtomicBoolean开始说吧,自己正好也复习一下。对于官方的说明是:
可以用原子方式更新的 boolean 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic
包规范。AtomicBoolean 可用在应用程序中(如以原子方式更新的标志),但不能用于替换 B...
分类:
其他好文 时间:
2015-06-12 11:43:09
阅读次数:
127
Java 理论与实践: 流行的原子新原子类是 java.util.concurrent 的隐藏精华在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待、无锁定的算法。在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化。请跟随并行专家 B...
分类:
编程语言 时间:
2015-05-07 23:26:41
阅读次数:
267