同步方式 | 是否为内核对象 | 特点 | 模拟场景 |
---|---|---|---|
临界区 | 非内核对象 | 通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对临界区的访问。 | 电话亭 |
信号量 | 内核对象 | 它允许多个线程在同一时刻访问统一资源,但是需要限制同一时刻访问此资源的最大线程数目。 | 停车场剩余车位数目 |
互斥量 | 内核对象 | 用互斥对象机制,跨进程。只拥有互斥对象的线程才可以访问公共资源,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。 | 丐帮的打狗棒(帮主拥有) |
事件 | 内核对象 | 事件是用来同步地位不相等的多个线程,比如用来控制经典的读写模型和生产消费者模型。 | 仓库管理员 |