OS-并发-事件循环
基于事件的循环
一个典型的事件循环如下:
|
|
基于事件循环的并发,调度由程序自己进行,因此调度是可控的。同时,事件循环有两类实现:单线程事件循环、一个主线程负责事件循环并拉起其他线程处理具体事务。本次主要基于单线程事件循环进行。
一个典型的事件循环如下:
|
|
基于事件循环的并发,调度由程序自己进行,因此调度是可控的。同时,事件循环有两类实现:单线程事件循环、一个主线程负责事件循环并拉起其他线程处理具体事务。本次主要基于单线程事件循环进行。
条件变量是一种同步机制,用于线程间的通信。当某些执行状态不满足时,线程可以将自己加入到等待队列中,直到该条件发生并被唤醒。条件变量有两个主要操作
在《从入门到放弃》之中,写到并发编程需要放弃原子性、顺序性、可见性。
现在,我们需要让代码重新获得原子性和顺序性。为此,我们需要互斥,也就是阻止并发的发生,阻止多个线程同时读写数据。
进入并发领域,我们将要放弃很多默认的条件:
并发 vs 并行:
现代操作系统通过交换空间(swap space)实现虚拟内存的扩展能力。当物理内存容量不足以容纳所有活跃进程的页时,操作系统会将低频访问的页换出(page out)到磁盘的专用交换区域,从而释放物理内存资源。这种机制使得程序能够使用远大于实际物理内存的地址空间。