进程间通信——信号量(信号灯) 信号与信号量 信号:是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常,是一种处理异步事件的方式。 信号量:是一个特殊的变量,本质是计数器,记录了临界资源的数量。进程对其访问都是原子操作(PV操作),用于多线程、多进程之间同步临界资源。 ...
分类:
系统相关 时间:
2019-12-29 20:03:48
阅读次数:
116
熟悉shardingJDBC的同学都知道,分库分表的操作是使用shardingJDBC中非常重要的,可能还有很多初学者对此阶段的学习存在疑虑,因此,接下来我会帮助你逐渐深入分库分表的操作。环境准备pom.xml<parent><groupId>org.springframework.boot</groupId><artifactId>spring-b
分类:
数据库 时间:
2019-12-27 21:49:47
阅读次数:
95
2/3阶段提交解决的问题是分布式数据操作一致性问题,即在不同节点间数据多个操作的原子性问题,比如在A节点的数据增加和B节点数据的减少需要原子操作。 解决方案:在各个分布式节点之上引入TC(Trancaction Coordinator),由TC进行最终commit操作协调,只有各个节点的预操作(pr ...
分类:
其他好文 时间:
2019-12-26 19:34:40
阅读次数:
117
Kafka中的事务是怎么实现的? Kafka中的事务可以使应用程序将消费消息、生产消息、提交消费位移当作原子操作来处理,同时成功或失败,即使该生产或消费会跨多个分区。 生产者必须提供唯一的transactionalId,启动后请求事务协调器获取一个PID,transactionalId与PID一一对 ...
分类:
其他好文 时间:
2019-12-22 14:15:41
阅读次数:
82
在正则表达式中,存在操作符和操作元,操作符存在优先级,操作元被称做原子操作符优先级(由高到低)(先不用在意操作符的名称,虽然也看不太懂)1.转义符号(EscapingSymbol):\2.分组、捕获(GroupingorCapturing):(...)(?:...)(?=...)(?!...)(?<=...)(?<!...)3.数量(Quantifiers)a*a+a?a{n,m}4.
分类:
编程语言 时间:
2019-12-22 09:13:20
阅读次数:
123
临界区是指一个小代码段,在代码能够执行前,它必须独占对某些共享资源的访问权。和使用mutex一样,它们都是以原子操作方式来对共享资源进行访问。 临界区又叫关键代码段,与上一篇的mutex互斥体实现的功能一样,都是为了让多线程同步 从上面图片可以看到二者的区别,如果是在当前进程进行线程同步,只需要采用 ...
分类:
编程语言 时间:
2019-12-20 15:29:54
阅读次数:
108
从JDK5引入CAS原子操作,但没有对synchronized关键字做优化,而是增加了J.U.C.concurrent,concurrent包有更好的性能;从JDK6对synchronized的实现机制进行了较大调整,包括使用JDK5引进的CAS自旋之外,还增加了自适应的CAS自旋、锁消除、锁粗化、 ...
分类:
编程语言 时间:
2019-12-19 15:46:11
阅读次数:
83
AtomicInteger 针对整数类型的原子操作,有getAndIncrement,compareAndSet等方法。 Thread 线程有三个常用属性,id,每次递增生成tid,同一个jvm中tid不重复;name,自定义的名字,从直观上识别是什么线程;daemon,是否是守护模式,为true表 ...
分类:
其他好文 时间:
2019-12-16 13:35:22
阅读次数:
220
C++11中的原子操作(atomic operation) C++11中的原子操作(atomic operation) C++11中的原子操作(atomic operation) C++11中的原子操作(atomic operation) 所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体” ...
分类:
编程语言 时间:
2019-12-15 20:17:50
阅读次数:
93
首先要明白这几个知识点:关键字volatile的使用,原子操作,临界区的使用。明白的直接跳到文中的4.全局变量的使用及保护处查看。 1.关键字volatile 关键字volatile用于告诉编译器,说明被修身的变量可能会被意想不到地改变,防止编译器对代码进行优化。 比如如下程序: 上述4条语句,如果 ...
分类:
其他好文 时间:
2019-12-15 14:32:22
阅读次数:
127