UNPv3上一共总结了9种服务器模型分别是:1.迭代服务器2.并发服务器,为每个客户fork一个进程3.预先派生子进程,每个子进程都调用accept,accept无上锁保护4.预先派生子进程,以文件锁的方式保护accept5.预先派生子进程,以线程互斥锁上锁的方式保护accept6.预先派生子进程,...
分类:
其他好文 时间:
2015-03-17 23:25:13
阅读次数:
157
1、基本概念 详见:线程和进程关系和区别、同步和互斥、进程间通信2、以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1; 详见:多线程二 多线程中的隐蔽问题揭秘3、多线程中栈与堆是公有的还是私有的 (C) A:栈公有, 堆私有 ...
分类:
编程语言 时间:
2015-03-17 20:09:54
阅读次数:
182
死锁的条件互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当某个进程已获...
分类:
其他好文 时间:
2015-03-17 20:05:33
阅读次数:
122
ReentrantLock是一个较为常用的锁对象。在上次分析的uil开源项目中也多次被用到,下面谈谈其概念和基本使用。概念一个可重入的互斥锁定 Lock,它具有与使用 synchronized 相同的一些基本行为和语义,但功能更强大。名词解释:互斥表示同一时刻,多个线程中,只能有一个线程能获得该锁。...
分类:
数据库 时间:
2015-03-17 12:04:37
阅读次数:
194
1.信号量( 两个进程之间同步)
struct semaphore power_sem;
sema_init(&pdata->power_sem,1);
down(&pdata->power_sem);
up(&pdata->power_sem);
2.互斥量
struct mutex led_mutex;
mutex_init(&led_mutex);
m...
分类:
系统相关 时间:
2015-03-16 19:23:15
阅读次数:
237
上来先看MSDN关于lock的叙述:lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 下面的示例包含一个 lock 语句。lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻...
分类:
其他好文 时间:
2015-03-15 09:24:20
阅读次数:
211
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。
虽然进程在运行过程中,可能发生死...
分类:
其他好文 时间:
2015-03-14 12:33:33
阅读次数:
119
锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享...
分类:
编程语言 时间:
2015-03-14 06:23:06
阅读次数:
138
当一个MySQL连接会话等待另外一个会话持有的互斥锁时,会发生Innodb锁等待情况。通常情况下,持有该互斥锁的会话(连接)会迅速的执行完相关操作并释放掉持有的互斥锁,进而等待的会话在锁等待超时时间到来前获得该互斥锁,进行下一步操作。但在某些情况下,比如一个实例未感知..
分类:
数据库 时间:
2015-03-13 19:01:34
阅读次数:
180
程序代码中的临界区是需要互斥访问的,同一时刻只能有一个线程来访问临界区,也就是线程对临界区的访问时互斥的。竞争条件:当多个线程同时访问某个共享的内存区域并且对其进行读写操作时,就会出现数据破坏。这就是竞争条件。避免竞争条件的方法是synchronized加锁。如何来定义共享变量:1、在主类中定义一个...
分类:
编程语言 时间:
2015-03-11 23:12:53
阅读次数:
947