来源 UNIX 网络编程(第二版) 管道 是一种广泛的IPC形式,即可在程序中使用,也可在shell中使用。管道的问题在于它们只能在具有共同祖先的进程中使用,不过该问题已随有名管道即FIFO的引入而解决了。 消息队列 同步机制 需要某种同步形式,往往是为了防止多进程同时修改同一文件 记录上锁 信号量 ...
分类:
其他好文 时间:
2019-10-21 13:34:03
阅读次数:
82
Redis的主从同步机制可以确保redis的master和slave之间的数据同步。按照同步内容的多少可以分为全同步和部分同步;按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数据修改同步;本文将对这两种机制的流程进行分析。 全备份过程中,在slave启动时,会向其master ...
分类:
其他好文 时间:
2019-10-02 00:22:30
阅读次数:
108
锁的基础知识 锁的类型 锁从宏观上分类,只分为两种:悲观锁与乐观锁。 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上 ...
分类:
编程语言 时间:
2019-09-25 00:55:23
阅读次数:
87
Redis主从复制机制 1、读写分离的好处 + 性能优化:主服务器专注于写操作,可以更适合写入数据的模式工作;同样,从服务器专注于读操作,可以用更适合读取数据的模式工作。 + 强化数据安全,避免单点故障:由于同步机制的存在,各个服务器之间的数据保持一致,所以其中某个服务器宕机不会导致数据丢失或无法访 ...
分类:
其他好文 时间:
2019-09-20 20:46:46
阅读次数:
97
[TOC] 1. 线程同步概述 线程同步定义 线程同步,指的是控制多线程间的相对执行顺序,从而在线程间正确、有序地共享数据,以下为线程同步常见使用场合。 多线程执行的任务在顺序上存在依赖关系 线程间共享数据只能同时被一个线程使用 线程同步方法 在实际项目中,经常使用的线程同步方法主要分为三种: 互斥 ...
分类:
编程语言 时间:
2019-09-14 14:07:27
阅读次数:
103
CountDownLatch 实例代码: semaphore : 控制并发访问的线程个数 通过提供同步机制,来控制当前访问的线程个数 tryacquire: 尝试获取可用资源,如果获取不到就丢弃 cyclicBarrier: 使用场景和countDownLatch的使用场景很类似,但是可以循环的使用 ...
分类:
其他好文 时间:
2019-09-12 09:24:40
阅读次数:
66
为什么要加锁问题背景当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。要解决的问题多用户环境下保证数据库完整性和一致性锁是什么在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象
分类:
数据库 时间:
2019-09-09 14:42:09
阅读次数:
144
锁的内存语义 锁的释放 获取建立的happens before关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息. 假设线程A执行writer()方法,随后线程B执行reader()方法.根据happens before规则,这个 ...
分类:
其他好文 时间:
2019-09-04 09:55:46
阅读次数:
76
加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。 加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如ReentrantLock需要进行lock与unlock。而隐式锁则是Synchronized,jvm内 ...
分类:
其他好文 时间:
2019-09-02 17:03:05
阅读次数:
82
锁 在使用用的过程中需要导入threading模块的Lock类 使用锁: 当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互 斥锁。 互斥锁为资源引入一个状态:锁定/非锁定。 锁的语法 创建锁、锁定锁、释放锁 在锁定锁的过 ...
分类:
编程语言 时间:
2019-09-01 18:38:07
阅读次数:
124