操作系统 进程和线程 基本概念 通信 进程间通信 线程间通信 线程间同步方式 有进程后为什么需要线程 单核机器上写多线程程序是否考虑要加锁? 线程需要保存哪些上下文,SP、PC、EAX这些寄存器是干嘛用的 多进程和多线程的使用场景 并发和并行 Linux虚拟内存空间 程序的内存结构 缺页中断 页表寻 ...
分类:
其他好文 时间:
2020-11-10 11:11:11
阅读次数:
5
这篇文章,我们来聊聊面试时一个比较有杀伤力的问题:聊聊你对AQS的理解? 之前有同学反馈,去互联网公司面试,面试官聊到并发时就问到了这个问题。当时那位同学内心估计受到了一万点伤害。。。 因为首先,很多人可能连AQS是什么都不知道。或者仅仅是听说过AQS这个名词,但是可能连全称怎么拼写都不知道。 更有 ...
分类:
编程语言 时间:
2020-07-05 19:12:03
阅读次数:
64
Lock(锁): 从JDK5.0开始,Java提供了更强大的线程同步机制——通过显示定义同步锁对象来实现同步,同步锁使用Lock对象充当 java.util.concurrent.locks.Lock接口是控制多个线程对共享线程进行了访问的工具。锁提供了对共享资源的独占访问,每次只有一个线程对Loc ...
分类:
编程语言 时间:
2020-02-04 20:22:52
阅读次数:
99
概念 AQS全称 AbstractQueuedSynchronizer。 AQS是一个并发包的基础组件,用来实现各种锁,各种同步组件的。它包含了state变量、加锁线程、等待队列等并发中的核心组件。 ReentrantLock、Semaphore、CountDownLatch、FutrueTask, ...
分类:
其他好文 时间:
2019-12-17 00:54:44
阅读次数:
126
显式锁-Lock与ReadWriteLockJDK针对Lock的主要实现是ReentrantLock,ReadWriteLock实现是ReentrantReadWriteLock。本文主要介绍ReentrantLock。 ReentrantReadWriteLock两把锁共享一个等待队列,两把锁的状 ...
分类:
其他好文 时间:
2019-10-04 09:51:30
阅读次数:
66
从JDK1.5开始,Java提供了java.util.concurrent.atomic包,该包中的原子操作类提供了一种使用简单、性能高效(使用CAS操作,无需加锁)、线程安全地更新一个变量的方式。 `java.util.concurrent.atomic`包中的类.png 根据变量类型的不同,At ...
分类:
编程语言 时间:
2019-07-28 14:03:09
阅读次数:
110
加锁本身不会带来多少性能的损耗,性能的损耗主要在获取锁的过程。1.尽量不要锁住方法,因为在普通成员函数上加锁,线程获得的是该方法所在对象的对象锁;2.缩小同步代码块,尤其是一些循环操作、同步IO操作,并且不止是在代码行数上缩小同步块,在执行逻辑上也应该缩小,例如多增加一些条件判断,在符合条件的情况下 ...
分类:
其他好文 时间:
2018-12-17 22:01:19
阅读次数:
222
表INNODB_TRX的结构说明 等待事务的锁ID,如trx_state的状态为LOCK WAIT,那么该值代表当前的事务等待之前事务 占用锁资源的ID。若trx_state不是LOCK WAIT, 则该值为NULL 事务的权重,反映了一个事务修改和锁定的行数。在InnoDB存储引擎中,当发生死锁需 ...
分类:
数据库 时间:
2018-07-22 16:55:36
阅读次数:
143
相关函数说明 定义锁 定义mutexattr_t变量 设置mutexattr属性 其他相关属性 linux下pthread.h中的线程属性 互斥锁属性 互斥锁的属性在创建锁的时候指定,在LinuxThreads实现中仅有一个锁类型属性,不同的锁类型在试图对一个已经被锁定的互斥锁加锁时表现不同。当前( ...
分类:
其他好文 时间:
2018-06-14 01:21:28
阅读次数:
377
# 导入多线程模块 import threading # 实例化一个RLock对象mlock mlock = threading.RLock() # 将0赋值给num变量 num = 0 # 定义test函数 def test(): global num # 将num变量转换成全局变量 mlock.... ...
分类:
编程语言 时间:
2018-01-07 14:28:03
阅读次数:
139