一、软件体系结构与设计过程 软件体系结构(软件架构):{构建,连接件,约束}。 构件:组成系统的具有一定独立功能的不同粒度的程序模块等。 连接件:将不同的构件连接起来,表示构件间的相互作用,如信号量的传递、功能和方法的调用。 约束:对象连接时的规则。 软件设计过程: 概要设计: 完成软件的总体结构设 ...
分类:
数据库 时间:
2020-06-14 10:38:39
阅读次数:
88
为了避免多个线程对同一个数据进行读写,我们要将各个线程进行同步。所谓同步,就是指在一个线程访问数据未结束的时候,其他线程不得对同一数据进行访问。 同步最常用的方法是锁。 二元信号量 binary semaphore 是最简单的一种锁,只有两种状态:占用和非占用。她适合只能被唯一一个线程独占访问的资源 ...
分类:
编程语言 时间:
2020-06-14 10:28:03
阅读次数:
57
案例: 哲学家问题,生产者和消费者问题 ###临界资源 临界资源指的是一 些虽作为共享资源却又无法同时被多个线程共同 访问的共享资源。当有进程在使用临界资源时,其他进程必须依据 操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使 用共享资源。 ###进程间的同步 ◆空闲让进:资源无占用,允许 ...
分类:
系统相关 时间:
2020-06-13 00:49:55
阅读次数:
89
1、Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源,它是共享锁的方式。 Semaphore可以用于做流量控制,特别是公用资源有限的应用场景。 1.1 构造方法 public Semaphore(int permits ...
分类:
其他好文 时间:
2020-06-13 00:11:03
阅读次数:
79
学习方法 学习技术的方法都很类似,大部分都有着类似的步骤: 场景 需求 解决方案 应用 原理 并发的目的 充分利用CPU 和 I/O资源 提高效率 并发的维度 分工 同步/协作 互斥 分工 线程池 fork/join future Guarded Suspension 保护性暂挂模式 Balking ...
分类:
其他好文 时间:
2020-06-12 00:48:24
阅读次数:
45
1. 在生产者和消费者问题中,mutex,empty,full信号量的作用是什么?如果将生产者和消费者问题中的两次wait操作和两次signal操作次序进行交换会产生什么问题? 解答:在生产者和消费者问题中,mutex信号量是互斥信号量,确保生产者和消费者对缓冲区资源的互斥访问。empty和full ...
分类:
系统相关 时间:
2020-06-10 14:38:56
阅读次数:
97
ManualResetEvent是C#中一个比较常用的工具,可用于线程间通信,实现一种类似信号量的功能。 这里的信号量与Java中的信号量Semaphore不同。 Java中的信号量Semaphore,是控制有限资源的并发访问。 这里的ManualResetEvent,更像是一种线程挡板。 先了解一 ...
锁既是给公共资源增加限制。如果是死锁的必须满足以下四个条件,互斥,不可剥夺,请求与保持, 循环等待,只要系统出现死锁,这四个条件必须成立。 信号量,有时被称为信号灯。是在多线程环境下使用的一种设施,他负责协调各个线程,以保证他们能够正确、合理的使用公共资源。 互斥:是指某一资源同时只允许一个访问者对 ...
分类:
编程语言 时间:
2020-06-08 23:56:21
阅读次数:
123
Linux内核源码分析 -- 同步原语 -- 信号量 semaphore 源码位于 include/linux/semaphore struct semaphore { raw_spinlock_t lock; // 保护信号量的自旋锁 unsigned int count; // 现有的资源的数量 ...
分类:
系统相关 时间:
2020-06-07 19:39:35
阅读次数:
105
entrypoint设置容器的入口程序,就是容器启动时执行的程序,docker run中最后的命令将作为参数传给入口程序,它有两种格式exec和shell,其中shell使用/bin/sh -c运行,此时入口程序不能接受信号量,也就是忽略docker run的参数和cmd指令的参数,如果有多个ent ...
分类:
其他好文 时间:
2020-06-07 14:29:18
阅读次数:
86