../
// 用C++模拟Mesa Monitor
#import "/template.typ":*
#doc-template(
title: "用C++模拟Mesa Monitor",
date: "2019年6月20日",
body: [

Monitor(管程)是并发程序的同步方式之一。Monitor至少有两类,Mesa monitor和Hoare monitor。Mesa monitor在notify之后会继续运行,Hoare monitor在notify之后会进行context switch,来到wait的地方开始运行,所以在写wait的时候,Mesa monitor需要这样:

```cpp
while (locked)
    wait();
```

但是Hoare Monitor只需要这样:

```cpp
if (locked)
    wait();
```

目前还是Mesa Monitor最为常见。

实现 monitor 需要语言层面的支持。Java有`synchronized`关键字,可以用来实现mo

...

Email: i (at) mistivia (dot) com