概念: 是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修 ...
分类:
其他好文 时间:
2020-01-23 22:53:14
阅读次数:
168
题目描述: 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。 假设有 m 组互斥现象,每组中的那两个数字的面 ...
分类:
其他好文 时间:
2020-01-22 19:55:15
阅读次数:
90
【进程同步】在多进程之间,管理及控制对于共享变量的执行和访问 【竞争条件】多进程同步执行,共享至少一个变量,执行结果取决于不同进程对变量的改变顺序 【临界区】要求使用共享资源或变量的一段码 【临界区问题】多进程用来达成合作的一个协议:互斥(同一时间,只有一个进程执行临界区的码);进展通知(一个进程离 ...
分类:
系统相关 时间:
2020-01-22 16:43:24
阅读次数:
135
1.什么是进程 进程:正在进行的过程或者一个任务,是系统进行资源调度和分配的基本单元。进程是操作系统中最基本、最重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个抽象的概念,所有多道程序设计操作系统都建立在进程的基础上。 进程与程序的区别:程序 ...
分类:
编程语言 时间:
2020-01-21 21:35:14
阅读次数:
86
死锁,就是当两个以上的任务,双方都在等待对方完成释放资源,但是没有一方提前退出时,就称之为死锁。 哲学家吃饭问题 假设有3名哲学家在圆桌上准备吃面条,现在,只有3根筷子(不是三双),只有同时拥有2根(一双)筷子的哲学家才能吃,另外的人需要等待他吃完释放筷子。这里面: 资源: 指的就是筷子 任务: 每 ...
分类:
编程语言 时间:
2020-01-21 18:11:48
阅读次数:
72
1、为什么要线程通信 多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按照我们的规律执行线程,此时就需要线程之间协调通信。 2、线程通讯方式 线程间通信常用方式如下: l 休眠唤醒方式:Object的wait、notify、notifyAll 和 Condition的awa ...
分类:
编程语言 时间:
2020-01-21 17:47:08
阅读次数:
85
楔子 我们知道golang除了兼顾了开发速度和运行效率之外,最大的亮点就是在语言层面原生支持并发,也就是通过所谓的goroutine。不过既然是并发,那么就势必会面临很多问题。比如:资源竞争,多个goroutine同时访问一个资源会发生竞争从而产生意想不到的结果,那么这时候我们会通过加锁来解决;主g ...
分类:
其他好文 时间:
2020-01-21 16:23:18
阅读次数:
75
spdlog 基本结构分析 代码取自 "V1.5.0" , 代码堪称美学。 "spdlog" 是一个只有头文件的C++日志库,速度非常快,扩展性很强,更重要的是 社区活跃,文档齐全 。 使用 1. 参考官方的 "example" . 2. {fmt} 的格式使用也需要熟悉一下,毕竟也进 C++20 ...
分类:
其他好文 时间:
2020-01-19 16:36:06
阅读次数:
1143
概述 ReentrantLock是一个可重入的互斥锁,也被称为独占锁。它支持公平锁和非公平锁两种模式。 ReentrantLock的使用方法 下面看一个最初级的例子: 在进入方法后,在需要加锁的一些操作执行之前需要调用lock方法,在jdk文档中对lock方法详细解释如下: 获得锁。 如果锁没有被另 ...
分类:
其他好文 时间:
2020-01-17 18:47:35
阅读次数:
67
一、进程、线程、协程的概念 1、进程: 教科书上最经典的一句话解释:——进程是资源分配的最小单位 实质上的理解:——先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。进程的生命周期有调入,执行,保存的过程。 2、线程: ...
分类:
编程语言 时间:
2020-01-15 22:42:33
阅读次数:
91