进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。...
分类:
编程语言 时间:
2015-07-09 11:26:05
阅读次数:
179
【JVM锁优化:http://www.importnew.com/15340.html】【自旋锁】互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。而在很多应用上, 共享数据的锁定状态只会持续很短的一段时间。若实体机上有多...
分类:
其他好文 时间:
2015-07-09 00:34:17
阅读次数:
120
见源码:/********* 说明:********* 1.要让读者与写者之间、以及写者与写者之问要互斥地访同数据集;********* 2.在无写进程到来时各读者可同时访问数据集;********* 3.在读者和写者都等待时访问时写者优先.*********/#includ...
分类:
编程语言 时间:
2015-07-08 20:34:20
阅读次数:
145
互斥量(mutex)互斥锁创建有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁,方法如下:pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;在LinuxThreads实...
分类:
编程语言 时间:
2015-07-08 20:25:25
阅读次数:
230
一 基本概念:1 临界资源(critical resource): 系统中的某些资源一次只允许一个进程使用。2 临界区(critical section): 各个进程中对某些临界资源进行操作的程序片段。3 临界区的使用原则:1) 无进程在临界区,进程可进入2) 不允许两个进程同时处于临界区3) .....
分类:
系统相关 时间:
2015-07-08 14:19:27
阅读次数:
258
内容:读锁时共享的,写锁时互斥的(可见运行结果),都是通过AQS实现的。
public class ReentrantReadWriteLockTest {
static class MyObject {
private Object object;
private ReadWriteLock lock = new ReentrantReadWriteLock();
pu...
分类:
编程语言 时间:
2015-07-07 22:49:41
阅读次数:
204
进程间的互斥,我们可以让这些进程共享某个内存区(mmap实现),然后在该共享内存区中使用某种类型的同步变量但是,fcntl记录上锁往往更容易使用。#include #include int fcntl(int fd, int cmd, ... /* struct flock *arg */ );st...
分类:
系统相关 时间:
2015-07-07 12:27:55
阅读次数:
137
在JDK1.5之前,也就是J.U.C加入JDK之前,Java是依靠synchronized关键字(JVM底层提供)来维护协调对共享字段的访问,保证对这些变量的独占访问权,并且以后其他线程忽的该锁时,将可以看到对这些变量进行的更改(可见性,互斥性)。 锁机制的问题: 锁问题不可回避的,就是上下文...
分类:
其他好文 时间:
2015-07-06 19:39:49
阅读次数:
88
12.5.2 用互斥量进行同步
另一种在多线程程序中的同步访问方法是使用互斥量.它允许程序员锁住某个对象,使得每次只能有一个线程访问它.为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它.
用于互斥量的基本函数和用于信号量的函数非常相似,它们的定义如下所示:
#include
int pthread_mutex_init(pthread_mute...
分类:
系统相关 时间:
2015-07-06 14:22:06
阅读次数:
181
互斥对象 Mutexprivate Mutex m = new Mutex();public void Method(){
m.WaitOne();
//执行操作
m.ReleaseMutex();
}共享资源SemaphoreSemaphore是一个信号量,可以让多个资源分类型的同时进行。书中一个重要的有代表性的例子就是图书馆有多个电脑,有若干个人使用电脑的问题。是一个不错...
分类:
编程语言 时间:
2015-07-06 12:20:02
阅读次数:
130