一、进程同步 锁 ? 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的。而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理。 ? 加锁可以保证多个进程修改同一块数据时,同一时间只能有一个任务可以进行修改,即将并行修改为串行,运行速度降低, ...
分类:
其他好文 时间:
2019-09-16 21:34:20
阅读次数:
173
虚拟机拷贝大文件存在的问题 [TOC] 问题一:虚拟机扩容 1.VMware 编辑虚拟机设置 2.下载Gparted分区工具 3.删除与unallocated隔着的所有文件,其中有些文件加锁,将linux swap分区先swapoff 之后再删除。 具体细节:打开软件之后就是类似如下界面,我们要做得 ...
分类:
其他好文 时间:
2019-09-16 10:08:14
阅读次数:
101
线程安全是多线程开发的根基, 我们能够使用volatile保证变量更新的数据其他线程能够看到, 但是如果两个线程同时操作一个数据, 线程安全无法保证. 下面的例子中, i的结果大概率小于我们预期的200000, 原因就在于T1,T2同时获取i值, 先后写入同一个结果. 为保证线程的安全, 我们使用s ...
分类:
编程语言 时间:
2019-09-15 17:07:33
阅读次数:
111
分布式锁 多个系统要对一个key进行操作,最后操作key的顺序和预期的顺序不一致,此时就用分布式锁对一个目标加锁,使其他进程无法争到已经被占用的锁。 基本指令 加锁指令:setnx lock 目标 true 移除锁指令:del lock 目标 但是如果在加锁后执行出现异常终止导致没有移除锁,就会导致 ...
分类:
其他好文 时间:
2019-09-15 14:11:18
阅读次数:
84
转自:http://blog.chinaunix.net/uid-20768928-id-5077401.html 在LINUX RS485的使用过程中,由于各种原因,最后不得不使用中断底半部机制的方法来进行实现此功能。先讲两个小故事来描述一下,遇到的问题。也是因为自己对底半部机制理解得不透彻。这些 ...
分类:
系统相关 时间:
2019-09-10 17:57:33
阅读次数:
150
为什么要加锁问题背景当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。要解决的问题多用户环境下保证数据库完整性和一致性锁是什么在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象
分类:
数据库 时间:
2019-09-09 14:42:09
阅读次数:
144
CocurrentHashMap和Hashtable都是线程安全的,key和value都不能是null,其主要区别是在于实现线程安全的方式不同。 HashTableConcurrentHashMap(JDK8之前)ConcurrentHashMap 把所有的get、put方法加上锁实现同步 把数据分 ...
分类:
其他好文 时间:
2019-09-09 09:16:06
阅读次数:
107
锁和队列 1、锁multiprocessing-Lock 锁的应用场景:当多个进程需要操作同一个文件/数据的时候; 当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题。 为保证数据的安全性,多进程中只有去操作一些进程之间可以共享的数据资源的时候才需要进行加锁; 枷锁可以保证多个进程修 ...
分类:
其他好文 时间:
2019-09-07 17:11:56
阅读次数:
123
锁的内存语义 锁的释放 获取建立的happens before关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息. 假设线程A执行writer()方法,随后线程B执行reader()方法.根据happens before规则,这个 ...
分类:
其他好文 时间:
2019-09-04 09:55:46
阅读次数:
76
从JDK5开始,Java使用新的JSR-133内存模型,JSR-133使用happens-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系,这两个操作可以是在一个线程之内,也可以是在不同 ...
分类:
移动开发 时间:
2019-09-03 16:53:27
阅读次数:
96