php原子操作,文件锁flock,数据库事务 php没有继承posix标准支持的unix锁,只封装了一个linux系统调用flock(信号量也能做成锁),按理也是可以使用锁机制的,虽然效率低一点。php脚本是运行在fastcgi容器中,而fastcgi是多进程的,所以如果php程序访问了临界资源,势 ...
分类:
数据库 时间:
2019-01-23 14:31:57
阅读次数:
259
操作系统 一、基本特征: 1.并发:在一段时间能运行多个程序。 并行:同一时刻能运行多个指令,需要硬件支持,如同多流水线或多处理器。 操作系统通过引入进程和线程,使得程序能够并发运行。 2.共享:系统中的资源可以被多个并发进程共同使用。 两种共享方式:互斥共享--又称为临界资源,例如打印机,在同一时 ...
分类:
其他好文 时间:
2018-12-16 18:45:22
阅读次数:
173
1、不要去解锁一个未被加锁的mutex锁; 2、不要一个线程中加锁而在另一个线程中解锁; 3、使用mutex锁用于保护临界资源,严格按照“加锁-->写入/读取临界资源-->解锁”的流程执行,对于线程间同步的需求使用条件变量或信号量实现。 1. https://blog.csdn.net/luckya ...
分类:
其他好文 时间:
2018-11-29 12:29:14
阅读次数:
137
Java中常用的设计模式 1.单例模式 我所理解的单例模式:整个程序中只允许有唯一的一个对象(这个类只能实例化一次) 看看我找到的解释:当一个类只能有一个对象时,往往会用到单例模式,例如,现实生活中有很多临界资源,像 打印机、处理器(单核)、皇帝、太子等等,它们都是稀有资源,只能有一个实例对象 一句 ...
分类:
编程语言 时间:
2018-11-26 20:31:22
阅读次数:
214
1. 使用PV信号量使就餐互斥方案的缺点 将就餐看成必须互斥访问的临界资源, 这样会造成资源(叉子)的浪费.五把叉子, 一次应该有两个不相邻的哲学家同时进餐. 2. 算法实现 数据结构 主函数 功能: 尝试获取两把叉子, 获取不到便阻塞 功能: 放下两把叉子, 并尝试唤醒邻居 拿叉子策略 ...
分类:
其他好文 时间:
2018-11-18 13:33:26
阅读次数:
339
一、数据结构 1.多个进程: { P0,P1,P2,P4 } 代表1,2,3,4四个需要临界资源的进程 2.几种资源:{ A, B ,C } 代表A,B,C三种临界资源 3.Max:最大需求矩阵(进程完成执行需要的各资源总量) Allocation:分配矩阵(某个进程现在已经拥有的各资源量) Nee ...
分类:
编程语言 时间:
2018-11-10 10:45:34
阅读次数:
262
在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访问这
分类:
编程语言 时间:
2018-11-08 22:11:53
阅读次数:
207
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 ...
分类:
编程语言 时间:
2018-10-25 15:41:21
阅读次数:
210
线程安全,是Java并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要原因有两点:1,存在共享数据(也称临界资源)2,存在多条线程,共同操作共享数据。 1、synchronized 的实现原理以及锁优化? synchronized的作用主要有三个: 在Java中所有对象都可以作为锁,这是 ...
分类:
编程语言 时间:
2018-10-23 14:49:41
阅读次数:
153
概念(引入原因) 协调进程间的相互制约关系。 临界资源与临界区 一次仅允许一个进程使用的资源称为临界资源(与共享资源对立,有些资源如私有资源,它只能给一个进程使用,不存在临界问题),访问临界资源的那段代码称为临界区。 进程间相互制约关系 同步 直接制约关系,进程A通过缓冲区向进程B提供数据;当缓冲区 ...
分类:
系统相关 时间:
2018-10-08 22:18:26
阅读次数:
250