多线程
多放香菜
这个作者很懒,什么都没留下…
展开
-
cpu调度算法
cpu调度算法 1.FCFS(先来先服务) 无法保证周转时间, 2.SJF(短作业优先) 这种方法周转时间最小。 但是如果中间有个任务现在要执行,必须要等到前面的任务执行完才行,响应时间无法保证。 3.时间片轮状调度, 每个任务分几个时间片,响应时间就可以保证。 4.优先级调度 优先高的进程,一直执行,可能会产生饥饿。 ...原创 2020-05-14 10:03:09 · 204 阅读 · 0 评论 -
进程通信(1)
1.信号量可以实现同步,进程间通过信号量走走停停 读写信号量的代码一定是临界区。 临界区就是 一次只允许一个进程进入的 的那段代码。 但是共同修改信号量,会出现问题。 比如说一个进程只修改了信号量没保存,时间片到了切过去了。 调度的问题。 你也不知道时间片什么时候没,时钟中断什么时候发生。 后果:在内核,又没有保护共享数据造成竞争错误。 中断了,才有调度,所以要阻止中断。 关中断,硬件指令cli 开中断,硬件指令 sti 3.cpu上面有个中断寄存器。 中断寄存器怎么工作? 每次时钟中断,就在上面打个1原创 2020-05-14 08:32:09 · 101 阅读 · 0 评论 -
线程的通信
为什么需要线程通信? 因为多个线程,操作这个共享数据。 1.调用wait()方法 线程阻塞。 一旦执行wait(),会释放锁(同步监视器)。** .wait必须使用在同步代码块,同步方法 2.有wait就有notify()方法 notify() 唤醒被wait()的一个线程,如果多个线程被wait,就唤醒优先级较高的那个。 notifyall() 一旦执行此方法,就会唤醒所有被wait()的线程 然后wait和notifyall,notify调用者, 必须是这个同步监视器。 然后这三个方法定义在Obje原创 2020-05-13 23:57:28 · 67 阅读 · 0 评论 -
线程安全问题
线程安全问题 1.synchronized 关键字。 其实是一个内置锁,通过锁对象的moinitor的取用与释放, 来实现加锁和解锁。锁对象可以是任何一个对象。 synchronized 关键字实现同步代码块 sychronized(同步监视器){ //需要同步的代码 } 同步监视器==锁对象, Object obj = new Object(); 需要同步的代码 = 操作共享数据的代码 共享数据:多个线程共同操作的变量。 要求:多个线程必须要共用同一把锁。 缺点: 同步代码块里面只有一个原创 2020-05-13 23:25:37 · 97 阅读 · 0 评论