ICode9

精准搜索请尝试: 精确搜索
  • 操作系统——经典进程同步问题2021-12-19 18:59:03

    生产者、消费者问题 1、互斥关系:生产者进程和消费者进程对缓冲池的访问互斥。 2、同步关系:缓冲池未满生产者才能向其中放入产品;缓冲池非空消费者才能从其中取出产品。 1. 利用记录型信号量解决 semaphore mutex = 1, empty = n, full = 0; // 分别代表对缓冲池互斥访问,缓冲池

  • STL线程安全2021-12-19 09:32:37

    在STL容器里对多线程支持的黄金规则已经由SGI定义 1.多个读者是安全的。多线程可能同时读取一个容器的内容,这将正确的执行,当然,在读取时不能有任何写入者操作这个容器 2.对不同容器的多个写入者是安全的,。多线程可以同时写不同的容器 一个库可能试图以下列方式实现线程安全的

  • 【三十一】Python全栈之路--线程2021-12-18 22:03:01

    文章目录 1. 线程的概念2. 线程的基本使用3. 自定义线程_守护线程4. 线程安全问题5. 死锁_互斥锁_递归锁6. 线程事件 1. 线程的概念 2. 线程的基本使用 3. 自定义线程_守护线程 4. 线程安全问题 5. 死锁_互斥锁_递归锁 6. 线程事件

  • Linux中各种锁原理概述2021-12-18 19:31:22

    在linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有

  • linux互斥量pthread_mutex_t相关函数2021-12-18 11:05:27

    0. 头文件 #include <pthread.h>   1. 初始化 int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); 简单的使用可以使用默认的属性初始化互斥量,第二个参数设置为NULL即可。   2. 销毁 int pthread_mutex_destroy(pthread_mute

  • Linux C 互斥锁的使用2021-12-17 20:01:40

    互斥锁的作用 保护共享数据: 在并发机制的情况下,有时候会有多个线程同时访问同一片数据,为了保护数据操作的准确性就需要通过加锁来进行保护。 保持操作互斥: 可能一个程序会有多个操作,但是同一个时间只能有一个操作被执行,例如a/b两个操作,如果a被执行,b就不能被执行,同理b被执行,a

  • 进程管理笔记2021-12-16 13:59:19

    目录 1程序的执行方式 1.1程序的顺序执行 1.2程序的并发执行 1.3关于并发执行条件的理论探讨 2 进程的定义和描述 2.1进程process的定义 2.2进程的描述 2.3进程与程序的关系 2.4进程的特征 2.5进程的状态转换 2.6进程的控制*** 原语及分类 进程的创建 进程退出 进程阻塞 进程唤

  • 说说进程间通信和线程间通信的几种方式及区别2021-12-14 01:03:25

    进程和线程的区别: 通信方式之间的差异 一、进程间的通信方式 管道(pipe): 有名管道(namedpipe) : 信号量(semophore) : 消息队列(messagequeue): 信号(sinal): 共享内存(shared memory): 套接字(socket): 二、线程间的通信方式 进程和线程的区别: 对于进程来说,子进程是父进程的复制品,从父进程那里获

  • C++多线程-互斥锁(mutex)2021-12-12 11:31:00

             在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。比如说,同一个文件,可能一个线程会对其进行写操作,而另一个线程需要对这个文件进行读操作,可想而知,如果写线程还没有写结束,而此时读线程开始了,或者读线程还没有读结束而写线程开始了,那么最终的结

  • java之互斥锁和信号量2021-12-11 17:07:23

    悲观锁(重量级锁,互斥锁):由于在多线程中存在大量竞争关系,争抢同一资源。在线程争抢到资源后,将这一资源锁死,不允许其他资源在进行争抢。 乐观锁(轻量级锁,信号量):不认为有大量的线程争抢同一资源,以版本号为基础,进行数据的取舍。

  • 第五部分 高效并发2021-12-09 20:30:43

    文章目录 第12章 Java内存模型与线程12.1 概述12.2 硬件的效率和一致性12.3 Java内存模型12.3.1 主内存和工作内存12.3.2 内存间交互操作12.3.4 对于volatile型变量的特殊规则12.3.4 对于long和double型变量的特殊规则12.3.5 原子性、可见性和有序性12.3.6 先行发生原则(hap

  • 操作系统课程设计(linux操作系统)2021-12-09 15:02:53

    操作系统课程设计 本操作系统课程设计主要在linux虚拟机上操作,请下载虚拟机相关软件!实验一 Windows 进程管理实验二 Linux进程管理实验三 Linux进程间通信实验四 Windows 的互斥与同步实验五 内存管理实验六 银行家算法的模拟与实现实验七 磁盘调度算法的模拟与实现实验八

  • 线程的几种锁及基本操作2021-12-09 10:31:18

    我们先来看一段代码: #include <stdio.h> #include <stdlib.h> #include <pthread.h> //创建两个线程,分别对两个全变量进行++操作,判断两个变量是否相等,不相等打印 int a = 0; int b = 0; // 未初始化 和0初始化的成员放在bbs pthread_mutex_t mutex; void* route() {

  • linux互斥锁---一个简单的计程车线程2021-12-07 21:02:03

    实现一个计程车的流程,打车,taxi,上车,到达 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> //定义头文件 pthread_cond_t taxicond = PTHREAD_COND_INITIALIZER; /*初始化条件变量*/ pthread_mutex_t taximutex = PTHREAD_MUTEX_

  • Mysql学习笔记(一):锁类型介绍2021-12-07 13:01:40

    以下内容主要参考Mysql官方文档整理 MySQL server的锁主要是全局锁,行锁和表锁,通过存储引擎则可以实现不同的锁机制 MyISAM只支持到表级锁,因为MyISAM的索引与数据是分离的,其索引存储的是数据的物理地址,通过索引无法找到数据,就只能把整个表锁起来 innoDB的锁模型: 行级别的共享(

  • 【操作系统】王道考研 p22-26 生产者消费者问题、多生产者多消费者问题、吸烟者问题、读者写者问题、哲学家进餐问题2021-12-06 20:31:15

    生产者消费者问题 多生产者多消费者问题 吸烟者问题 读者写者问题 哲学家进餐问题 生产者消费者问题 有同步和互斥: 同步:缓冲区没满才能放产品,缓冲区不空才能取产品。 互斥:各进程互斥访问。 关于PV:P是消耗,V是释放(或理解为P是进,V是出) 生产者P一个空闲缓冲区,V一个产品。 消费者P

  • SQLite学习之路⑪ 互斥锁(2021SC@SDUSC)2021-12-06 00:00:41

    SQLite 学习之路 第十一节 请求锁和销毁锁 请求互斥锁,sqlite3_mutex_enter()导致阻塞,sqlite3_mutex_try()返回SQLITE_BUSY。sqlite3_mutex_enter() 和 sqlite3_mutex_try()例程尝试键入一个互斥锁,如果另一个线程已经拥有这个互斥锁,sqlite3_mutex_enter()将阻塞,sqlite3_mu

  • 【Linux Server】三、Linux多线程开发2021-12-05 18:02:41

    三、Linux多线程开发 线程概述 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 U

  • Freertos Trace任务可视化分析(三)互斥量 SystemView2021-12-04 20:01:58

    SystemView 记录Trace通过Event进行事件记录。 举个简单的例子 prvAddCurrentTaskToDelayedList函数中 traceMOVED_TASK_TO_DELAYED_LIST(); Freertos内核代码中有很多traceXXX的函数,SystemView重新定义这些函数。 SEGGER_SYSVIEW_FreeRTOS.h #define traceMOVED_TASK_TO_DEL

  • 进程互斥的软件实现方法2021-12-04 19:04:15

    进程互斥遵守的原则 空闲让进:临界区空闲时,应允许一个进程访问。 忙则等待:临界区正在被访问时,其他试图访问的进程需要等待。 有限等待:要在有限时间内进入临界区,包装不会饥饿。 让权等待:进不来临界区的进程,要释放处理机,防止忙等 单标志法 算法思想 两个进程在访问完临界区后会

  • 三.多任务编程2021-12-03 14:58:20

     3.3 多进程的使用 1 导入进程包 #导入进程包 import multiprocessing 2. Process进程类的说明 Process([group [, target [, name [, args [, kwargs]]]]]) group:指定进程组,目前只能使用Nonetarget:执行的目标任务名name:进程名字args:以元组方式给执行任务传参kwargs:以字典方式

  • 进程之间的通信2021-12-02 22:00:16

    什么是进程通信 顾名思义,进程通信就是指进程之间的信息交互。 进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立 为了保证安全,一个进程不能直接访问另一个进程的地址空间。如果进程1可以访问进程1的内存空间,那么就意味着可以对进程2的内存空

  • C++ 11并发指南(std::mutex详解)2021-12-02 10:04:48

    Mutex又称互斥量,C++11中与Mutex相关的类(包括锁类型)和函数都声明在<mutex>头文件中,所以使用std::mutex就必须包含<mutex>头文件。 <mutex>头文件介绍 Mutex系列类(四种) std::mutex, 最基本的Mutex类。std::recursive_mutex,递归Mutex类。std::time_mutex,定时Mutex类。std::recurs

  • 第一章 运行单一实例2021-12-01 21:58:12

    第一章 运行单一实例 前言函数介绍CreateMutex函数语法参数返回值 示例代码测试 原理学习 前言 前言 运行过多的进程可能会造成c/s端通讯异常,而过多的危险程序进程也会增加暴露风险,所以说可以给程序加一个api,通过创建一个系统命名互斥对象来实现。又比如在自启维权操作

  • Java中的重量级锁2021-12-01 21:31:34

    我们知道,Java中的轻量级锁是基于CAS的,CAS是不走系统调用的,是在用户态的代码中“插入” cmpxchg 汇编指令,由这种CPU原语性质的汇编指令保证原子性。所以整体来看一直是在用户态代码中执行,而没有走入内核的代码。没有用户态/内核态之间的上下文切换。 而重量级锁才是进行了系统调用

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有