#include #include #include #include // union semun { // int val; // struct semid_ds *buf; // unsigned short *array; // struct seminfo *__buf; // }; in... ...
分类:
其他好文 时间:
2019-12-08 23:26:08
阅读次数:
122
一个数据文件可以被多个进程所共享,把只要求读文件的进程成为“Reader进程”,其他进程称为“Writer进程”,允许多个进程读,但是不允许一个Writer进程和其他进程一起读或者写。 读者: 在读者问题中,把readcount当成了互斥信号量,在执行readcount减减或加加之前都要指向p操作。 ...
分类:
系统相关 时间:
2019-12-07 19:41:06
阅读次数:
123
网络中进程之间如何通信 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是 ...
分类:
编程语言 时间:
2019-12-07 14:19:00
阅读次数:
77
关于epoll和select的区别: 1、epoll和select都是I/O多路复用的技术,都可以实时监听多个I/O事件的状态 2、epoll比select效率更高,主要是基于其操作系统支持的 I/O,事件通知机制,而 select 是基于轮询机制 3、select 能并行支持 I/O 比较小,且无 ...
分类:
其他好文 时间:
2019-12-07 10:50:36
阅读次数:
104
设两个进程共用一个临界资源的互斥信号量mutex=1,当mutex=-1时表示()。 一个进程进入了临界区,另一个进程等待 没有一个进程进入临界区 两个进程都进入临界区 两个进程都在等待 互斥信号量不采用自旋锁的方式实现,mutex初始值为1,当一个准备进入临界区时,mutex - 1 = 0,该进 ...
分类:
系统相关 时间:
2019-12-02 23:18:33
阅读次数:
129
通过前面对 线程互斥锁lock / 线程事件event / 线程条件变量condition / 线程定时器timer 的讲解,相信你对线程threading模块已经有了一定的了解,同时执行多个线程的确可以提高程序的效率,但是并非线程的数量越多越好,可能对于计算机而言,你直接运行20~30线程可能没太 ...
分类:
编程语言 时间:
2019-11-30 12:10:49
阅读次数:
106
线程池: 一个线程池主要由以下的四个部分构成。 1 线程池管理器,负责创建线程和销毁线程,向工作队列中添加任务等。 2 工作线程,线程池当中负责执行任务的线程,当任务队列为空的情况下,则该线程处于等待的状态。 一般使用信号量来跟踪当先任务队列当中任务的数量,线程处于sem_wait()的状态,等待任 ...
分类:
编程语言 时间:
2019-11-30 11:56:52
阅读次数:
81
EventLoop是什么?什么是宏任务?微任务又是什么?任务队列…… ...
分类:
Web程序 时间:
2019-11-28 23:13:08
阅读次数:
204
? 在我们平时使用Windows时,会看到同时运行多个应用程序的假象,这实际上是CPU切换进程的频率很快,导致我们没有察觉。实际上,CPU每一段时间只能运行一个应用程序。 进程与线程 一个操作系统可以有多个进程,进程可以简单的看做是正在执行中的应用程序。进程是多个线程的集合,一个进程中至少有一个线程 ...
分类:
编程语言 时间:
2019-11-27 20:39:57
阅读次数:
90
1,为啥需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的设计 ...
分类:
其他好文 时间:
2019-11-26 13:29:23
阅读次数:
72