一、基本概念 二、中断屏蔽 三、原子操作 四、自旋锁 五、信号量 六、互斥体 七、自旋锁与信号量的比较 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使是经验丰富的驱动工程师也常常设计出包含并发问题的bug驱动程序。 Linux提供了多种解决竞态问题的 ...
分类:
系统相关 时间:
2016-12-07 01:13:28
阅读次数:
379
在分布式系统中,各个进程(本文使用进程来描述分布式系统中的运行主体,它们可以在同一个物理节点上也可以在不同的物理节点上)相互之间通常是需要协调进行运作的,有时是不同进程所处理的数据有依赖关系,必须按照一定的次序进行处理,有时是在一些特定的时间需要某个进程处理某些事务等等,人们通常会使用分布式锁、选举 ...
分类:
其他好文 时间:
2016-12-06 20:47:20
阅读次数:
279
同步,永远是多线程编程中最核心和最重要的话题.同步相关的概念比如:临界区,原子操作,以及互斥量等等 总的来说,在多个线程之间采取同步措施,无非是为了让他们更好的协同工作或者维持共享数据的一致性. 1.共享数据的一致性: 多线程程序多以共享数据作为在线程之间传递数据的手段,由于一个进程所拥有的相当一部 ...
分类:
编程语言 时间:
2016-12-04 19:50:41
阅读次数:
144
回顾:内核竞态与并发什么情况下会产生竞态1)SMP2)单CPU支持任务抢占3)中断和进程之间4)中断和中断之间解决竞态的方法1)中断屏蔽2)原子操作位原子操作整形原子操作atomic{int。。。。}3)自旋锁优点:一旦可以获取锁,立即获取缺点:长时间获取锁不成功,会消耗CPU资源它..
分类:
其他好文 时间:
2016-12-04 00:55:56
阅读次数:
469
单核,多核CPU的原子操作 一. 何谓"原子操作":原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch). 二. 为什么关注原子操作?1. 如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费 ...
分类:
其他好文 时间:
2016-12-04 00:20:20
阅读次数:
244
内核态的竞态与并行中断屏蔽:local_irq_save(flags)local_irq_restore(flags)Telnet192.168.x.x登录开发板#if0。。。。。。#endif原子操作原子操作指的是在执行过程中不会被别的代码所中断的操作.分为位和整型变量两类原子操作。voidatomic_set(atomic_t*v,inti);//设置原子变..
分类:
系统相关 时间:
2016-12-01 22:57:31
阅读次数:
322
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是 ...
分类:
编程语言 时间:
2016-11-24 06:54:05
阅读次数:
212
信号量与普通整型变量的区别: ①信号量(semaphore)是非负整型变量,除了初始化之外,它只能通过两个标准原子操作:wait(semap) , signal(semap) ; 来进行访问; ②操作也被成为PV原语(P来源于Dutch proberen"测试",V来源于Dutch verhogen ...
分类:
其他好文 时间:
2016-11-23 22:26:21
阅读次数:
213
Hibernate体系结构的简单介绍 1.SessionFactory: 单个数据库映射关系经过编译后的内存镜像,是线程安全的。它是生产Session的工厂,本身需要依赖于ConnectionPeovider。该对象可以在进程或者集群的级别上,为事务之间可以重用的数据提供二级缓存。 2.Sessio ...
分类:
Web程序 时间:
2016-11-15 14:26:02
阅读次数:
163
CURD(创建[Create]、更新[Updata]、读取[Read]、删除[Delete]),定义了用于处理数据的基本原子操作。 CURD在具体的应用中并非一定使用create、updata、read、delete字样的方法,但是他们完成的功能是一致的。 例如: ThinkPHP就是使用add、s ...
分类:
Web程序 时间:
2016-10-29 02:00:54
阅读次数:
266