互斥锁(互斥量) 创建互斥锁 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
记录肖堃老师讲解的linux线程 1. linux系统中多任务(进程/线程)之间的关系 1> 独立:仅竞争CPU资源 2> 互斥:竞争除CPU外的其他资源 3> 同步:协调彼此运行的步调,保证协同运行的各个任务具有正确的执行次序 4> 通信:数据共享,彼此间传递数据或信息,以协同完成某项工作 2. ...
分类:
编程语言 时间:
2020-06-03 15:55:37
阅读次数:
88
信号量通常用于进程并发控制,此处并发有两个含义:进程共享资源的互斥,进程时序关系控制。这两种方式也是信号量最常见的应用。互斥量作为共享资源互斥最常用的方式,只能用于单一进程(要实现多进程,可以采用共享内存映射某个互斥量,但一般不这么做)。在Linux操作系统中,有两种类型的信号量:XSI信号量和PO ...
分类:
系统相关 时间:
2020-05-31 14:31:05
阅读次数:
88
@ 一、基本概念 在多线程环境中,有多个线程竞争同一个公共资源,就很容易引发线程安全的问题。因此就需要引入锁的机制,来保证任意时候只有一个线程在访问公共资源。 互斥量就是个类对象,可以理解为一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁定成功,如果没有锁成功,那么流程将卡在loc ...
分类:
编程语言 时间:
2020-05-31 12:57:50
阅读次数:
73
CreateMutexA CreateMutexExA CreateMutexExW CreateMutexW 可以用互斥量作为单实例应用控制, 如: 进程A创建互斥量Mutex, 启动进程B创建互斥量Mutex失败,这时候就不打开进程B而是打开进程A HANDLE hMutex = ::Creat ...
写在前面 最近,一直有小伙伴让我整理下关于JVM的知识,经过十几天的收集与整理,初版算是整理出来了。希望对大家有所帮助。 JDK 是什么? JDK 是用于支持 Java 程序开发的最小环境。 Java 程序设计语言 Java 虚拟机 Java API类库 JRE 是什么? JRE 是支持 Java ...
分类:
其他好文 时间:
2020-05-26 09:14:12
阅读次数:
152
以下出现代码均为伪代码; 2.5.1 生产者 消费者问题(考试模型占比 60%) 分析上图:缓冲区存在互斥问题,生产者与消费者之间还 存在同步问题 1. 利用 记录型信号量 解决生产者 消费者问题(==背下来==) 假定在生产者和消费者之间的共用缓冲池中具有n个缓冲区,这时可以利用互斥信号量mute ...
分类:
系统相关 时间:
2020-05-11 00:57:40
阅读次数:
88
/* * Copyright(C) 2020 Burgess Fan aLL rights reserved. * * 文件名称:mutex.c * 创 建 者:Burgess * 创建日期:2020年05月10日 */ #include <stdio.h> #include <unistd.h> ...
分类:
编程语言 时间:
2020-05-10 13:11:34
阅读次数:
85
Java实现锁的方式主要有2种,一是synchronized,二是并发包java.util.concurrent中Lock接口的实现类ReentrantLock。需要知道的是前者是关键字,JVM原生的亲儿子来着的,后者是封装类,未来JVM改进肯定是先改进synchronized关键字。 1.vola ...
分类:
编程语言 时间:
2020-05-03 18:28:44
阅读次数:
78