1. 临界区(Critical Section)我们知道,临界区是指某个代码区间,在该区间中需要访问某些共享的数据对象,又或者是总线,硬件寄存器等,通常这段代码区间的范围要控制在尽可能小的范围内。临界区内需要对这些数据对象和硬件对象的访问进行保护,保证在退出临界区前不会被临界区外的代码对这些对象进行...
分类:
其他好文 时间:
2015-03-14 10:59:25
阅读次数:
153
程序代码中的临界区是需要互斥访问的,同一时刻只能有一个线程来访问临界区,也就是线程对临界区的访问时互斥的。竞争条件:当多个线程同时访问某个共享的内存区域并且对其进行读写操作时,就会出现数据破坏。这就是竞争条件。避免竞争条件的方法是synchronized加锁。如何来定义共享变量:1、在主类中定义一个...
分类:
编程语言 时间:
2015-03-11 23:12:53
阅读次数:
947
atomic是最轻量级的锁,在一些场景下直接使用atomic包还是很有效的。
下面内容摘秒自《GO并发编程实战》—— 原子操作:
CAS操作的优势是,可以在不形成临界区和创建互斥量的情况下完成并发安全的值替换操作。
这可以大大的减少同步对程序性能的损耗。
当然,CAS操作也有劣势。在被操作值被频繁变更的情况下,CAS操作并不那么容易成功。...
分类:
编程语言 时间:
2015-03-11 17:24:03
阅读次数:
276
Semaphore(信号量)充当了操作系统概念下的“信号量”。它提供了“临界区中可用资源信号量”的相同功能。以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车...
分类:
编程语言 时间:
2015-03-10 15:13:59
阅读次数:
121
操作系统中非常经典的实现对临界区的管理操作,由Dijkstra发明。
P操作:申请一个资源。它是执行操作的前提,只有有了资源才可以执行操作。就和现实生活是一样的,只有有了资源才能够进行生产。
V操作:释放一个资源。在执行完毕一个操作以后要将占用的资源释放掉,和银行家算法吻合, 同时发出信号。...
分类:
其他好文 时间:
2015-03-09 20:54:58
阅读次数:
110
最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处。Delphi的线程同步方法:1、临界区申明一个临界资源FLock : TRTLCriticalSection;先初化一个临界资源对....
分类:
编程语言 时间:
2015-03-08 22:47:18
阅读次数:
260
场景:
1. 需要统计某个线程的对象上创建的个数.
2. 当创建的堆空间需要根据线程需要创建和结束时销毁时.
3. 因为范围是线程只能看到自己的存储数据,所以不需要临界区或互斥量来维护自己的堆内存. 加入如果用全局std::map实现,那么必须在put和get时加锁,这是很损耗资源的.
4. 可以用在维护一个连接,比如socket,database连接....
分类:
编程语言 时间:
2015-03-01 00:25:18
阅读次数:
273
C++拾遗--多线程:关键段解决子线程的互斥
前言
为了解决子线程的互斥问题,windows系统提出了关键段(CRITICAL_SECTION)的概念。它一共有四个共两对操作:初始化、销毁,进入、离开。它们定义在头文件synchapi.h中。
1.初始化关键段变量
VOID WINAPI InitializeCriticalSection(
LPCRITICAL_SECTION lpCriticalSection
);
2.销毁关键段变量
VOID WINAPI DeleteCrit...
分类:
编程语言 时间:
2015-02-28 23:08:07
阅读次数:
495
场景:
1. 在多线程程序里,临界区是最常见的同步访问共享资源的最简单的解决方案.
2. pthread是跨平台的线程模型,那么它和本地的线程模型的临界区编程有什么区别呢?...
分类:
编程语言 时间:
2015-02-27 18:27:43
阅读次数:
306
进程的同步与互斥 进程同步: 多个进程需要相互配合共同完成一项任务。 进程互斥: 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥;系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源, 而在进程中涉及到互斥资源的程序段叫临界区. Linux IPC发展 Linux下的进程通信手段基本上是从UNIX平台上的进程...
分类:
系统相关 时间:
2015-02-18 17:40:16
阅读次数:
239