前言最近看到有不少粉丝私信我说,能不能给整理出一份面试的要点出来,说自己复习的时候思绪很乱,老是找不到重点。那么今天就先给大家分享一个面试几乎必问的点,并发!在面试中问的频率很高的一个是分布式,一个就是并发,具体干货都在下方了。面试环节1.面试官:你先说下你对synchronized的了解。我:synchronized可以保证方法或者代码在运行时,同一时刻只有一个方法可以进入到临界区,同时还可以保
分类:
其他好文 时间:
2020-06-22 09:23:10
阅读次数:
48
进程的等待状态 如果进程不在执行的话,那么它在等待一些事件,内核分了很多的等待状态 这些状态通常由进程的描述符队列来实现的 ,每个队列可能悬空,来对应一组等待特定的事件的进程。 内核的可重入 几个进程可以同时在内核态执行,在单处理器上只有一个进程真正的运行,其他都是被阻塞的状态,或者处于一个低优先级 ...
分类:
其他好文 时间:
2020-06-17 23:35:50
阅读次数:
72
实现线程同步的第一种方式是我们经常使用的lock关键字,它将包围的语句块标记为临界区,这样一次只有一个线程进入临界区并执行代码。 lock(locker)其中locker应该为引用类型,且不为字符串 创建线程传递参数,将参数设置为object类型,在方法中再进行转换。 class Program { ...
分类:
编程语言 时间:
2020-06-08 00:56:43
阅读次数:
91
无论是三种中的哪一种,在没有程序占用临界区时,读者与写者之间的竞争都是公平的,所谓的不公平(优先)是在读者优先和写者优先中,优先方只要占有了临界区,那么之后所有优先方的程序(读者或写者)便占有了临界区的主导权,除非没有优先方程序提出要求,否则始终是优先方的程序占有临界区,反观非优先方即使某一次占有了 ...
分类:
其他好文 时间:
2020-05-29 13:42:07
阅读次数:
193
1. 概述 为了保证数据的一致性,在多线程编程中我们会用到锁,使得在某一时间点,只有一个线程进入临界区代码。虽然不同的语言可能会提供不同的锁接口,但是底层调用的都是操作系统的提供的锁,不同的高级语言只是在操作系统的锁机制基础上进行了些封装而已,要真正理解锁,还是得看操作系统是怎么实现锁的。 2. 锁 ...
分类:
其他好文 时间:
2020-05-21 17:43:14
阅读次数:
199
操作系统学习(十) 目录: 同步的基本概念 同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。 也就是相互制约的关系(共享资源) 临界资源和临界区 临界资源: 一段时间内只允许一进程访问的资源 临界区 程 ...
分类:
其他好文 时间:
2020-05-21 14:39:15
阅读次数:
66
例子: 生产者,消费者问题;消费者先进入临界区,条件变量未满足条件,阻塞等待;生产者无法进入临界区,从而无法修改条件变量,也就产生死锁; 解决方法:如果遇到条件变量未满足条件,消费者先释放锁,进入阻塞,等待条件变量得到满足;然后生产者可以进入临界区,修改条件变量,修改后通知消费者进入临界区,生产者释 ...
分类:
系统相关 时间:
2020-05-14 01:36:41
阅读次数:
76
为什么会发生进程调度? 因为处理机的数量小于进程的数量。进程争用处理机。而调度又是分层次的。 调度的时机、切换与过程 请求调度 -> 调度 ->切换。 但是,调度请求后,并不一定会进行调度与切换: 1)在处理中断的过程中,由于中断过程比较复杂的,中断属于系统工作的一部分,很难说清楚属于哪一个进程,所 ...
分类:
系统相关 时间:
2020-05-07 15:45:28
阅读次数:
71
睡眠与唤醒 Peterson解法和TSL解法都是正确的,但它们都有忙等待的缺点。这些解法在本质上是这样的: 当一个进程想进入临界区时,先检查是否允许进入,若不允许,则进程将踏步等待,直到许可为止 。 这种方法不仅浪费CPU时间,还可能引起预料不到的结果,即: 优先级翻转问题(priority inv ...
分类:
编程语言 时间:
2020-04-11 15:51:23
阅读次数:
97
个人感觉这临界区相当于java 中的sy 关键字那种 相当于重度锁吧 加锁之后 只允许本线程读写 其他线程读都不能 效率有点低 类似于 你上厕所锁门 别人就进不来 其他人想要使用时没法使用等你出来了才可以使用 下面是一段伪代码 如果不出错的话应该输出4000 #include <iostream> ...
分类:
编程语言 时间:
2020-04-07 14:15:26
阅读次数:
85