理解并发和并行 并行:多个CPU同时执行多个不同的多任务。 就像两个程序(进程),这两个程序是真的在不同的CPU内同时执行多个任务。 并发:CPU切换处理不同的多任务, 还是有两个程序,但只有一个CPU, 来进行切换处理两个多任务,而不是同时间内执行多任务(同一时间内的不同时间执行), 因为CPU切 ...
分类:
编程语言 时间:
2020-07-08 16:59:57
阅读次数:
70
多线程中的锁 首先讲讲锁的分类 锁的分类 公平锁/非公平锁 可重入锁(递归锁) 独享锁/共享锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁/自适应自旋锁 锁粗化/锁消除 公平锁和非公平锁 线程挂起和线程真正运行之间存在着很长的时间差 公平锁 多个线程按 ...
分类:
编程语言 时间:
2020-07-01 00:26:29
阅读次数:
83
java有哪些锁种类(转) https://www.cnblogs.com/lxmyhappy/p/7380073.html 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观 ...
分类:
编程语言 时间:
2020-06-26 10:43:16
阅读次数:
50
所谓lock-free和wait-free算法是指对于共享的数据并非对其加锁来控制访问,而是多个线程并行的访问。通过该算法可以达到对共享对象并发的读写而不会破坏对象本身。所谓lock-free是指对于线程不加锁,让系统执行所有的步骤。lock-free提到的不加锁是指不使用类似于互斥锁或者信号量之类 ...
分类:
其他好文 时间:
2020-06-19 14:21:43
阅读次数:
61
一.死锁,互斥锁,递归锁 死锁:只上锁不解锁容易造成死锁现象 互斥锁:加一把锁就对应解一把锁,形成互斥锁 递归锁:用于解决死锁,只是一种应急的处理方法 from threading import RLock 从语法上讲,锁可以互相嵌套,但不要使用 不要因为逻辑问题让上锁分成两次,导致死锁 二.线程队 ...
分类:
编程语言 时间:
2020-06-13 23:44:08
阅读次数:
96
互斥锁(互斥量) 创建互斥锁 pthread_mutex_t mutex; 初始化互斥锁 pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr); 销毁互斥锁 pthread_mutex_unlock(p ...
分类:
编程语言 时间:
2020-06-13 00:08:25
阅读次数:
67
一、多线程的特点:并发和异步 同步是指一个事件一个事件的完成,只有完成了上面的事件才能开始下面的事件;异步是指一个调用或请求发给调用者,调用者不用等待结果的返回而继续当前的处理。为了防止并发和异步带来线程间资源的竞争的无序性,需要引入同步机制。同步机制有互斥量(互斥锁)、读写锁和条件变量。 二、临界 ...
分类:
编程语言 时间:
2020-06-08 14:29:09
阅读次数:
62
进程 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆。 上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源)。进程是资源分配的最小单位。 进程是线程的容器。程序是指令,数据及其组织形式的描 ...
分类:
编程语言 时间:
2020-06-02 13:19:58
阅读次数:
55
一不小心就死锁了,怎么办? 在上一篇文章中,我们用 Account.class 作为互斥锁,来解决银行业务里面的转账问题,虽然这个方案不存在并发问题,但是所有账户的转账操作都是串行的,性能太差。 向现实世界要答案 我们试想在古代,没有信息化,账户的存在形式真的就是一个账本,而且每个账户都有一个账本, ...
分类:
编程语言 时间:
2020-05-28 00:50:02
阅读次数:
84
多线程已经成为服务器开发不可或缺的重要知识点了,那么怎样协调各个线程之间的工作就变得至关重要,于是这篇文章就来总结一下线程同步的方法。 什么是线程同步? “同”字应是指协同、协助、互相配合。主旨在协同步调,按预定的先后次序运行。线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地 ...
分类:
编程语言 时间:
2020-05-25 09:29:28
阅读次数:
55