5.1 并发模式:概述

5.3 消息队列模式(Message Queuing Pattern)

用途:

异步任务会合

实现:

通过队列消息来同步和共享任务间的信息。

优点:

  • 简单,不会出现互斥问题。
  • 信息通过值传递,不会导致并发系统中常见的资源损坏问题。
  • 可用于多种并发场景,如生产者-消费者、客户端-服务器等。

缺点:

  • 可能会导致消息丢失或延迟。
  • 需要额外的资源来存储和处理消息。

5.4 中断模式(Interrupt Pattern)

用途:

快速短事件处理

实现:

通过中断向量表和抽象中断处理器类来实现。

优点:

  • 响应快速高效。
  • 可原子性处理中断,不会影响其他任务的运行。
  • 适用于需要快速响应短事件的系统,如实时系统、嵌入式系统等。

缺点:

  • 可能导致中断的丢失或延迟。
  • 需要对中断处理器类进行编程,增加了系统的复杂性。

5.5 保护调用模式(Guarded Call Pattern)

用途:

同步任务会合

实现:

通过信号量保护跨线程边界的资源访问。

优点:

  • 可同步线程间及时的同步或数据交换。
  • 通过单个互斥信号量保护所有相关操作,减少了系统的复杂性。
  • 适用于需要频繁同步的系统。

缺点:

  • 可能会导致死锁。

5.6 会合模式(Rendezvous Pattern)

用途:

任务会合的泛化

实现:

将多个线程的同步抽象为一个对象本身。

优点:

  • 简化了保护调用模式。
  • 可同步一组线程或允许一组线程间的数据共享。
  • 适用于需要灵活的同步机制的系统。

缺点:

  • 可能会导致死锁。

5.7 循环执行模式(Cyclic Executive Pattern)

用途:

简单任务调度

实现:

通过一个有序列表维护一组线程,循环执行这些线程,然后重新开始。

优点:

  • 实现简单。
  • 可预测性高。
  • 适用于只有少数任务且任务执行时间可预测的系统。

缺点:

  • 响应时间不确定。
  • 无法满足所有任务的需求。

5.8 轮询模式(Round Robin Pattern)

用途:

任务调度中的公平性

实现:

采用“公平”调度原则,轮流执行一组线程。

优点:

  • 公平性高。
  • 适用于所有任务的进展比满足特定截止日期更重要的系统。

缺点:

  • 响应时间不确定。
  • 无法满足所有任务的需求。

5.9 静态优先级模式(Static Priority Pattern)

用途:

可调度系统的抢占式多任务处理

实现:

在设计时分配优先级,运行系统时不会动态重新分配优先级。

优点:

  • 简单性、可扩展性、可分析性高。
  • 适用于大多数实时系统。

缺点:

  • 无法满足复杂系统的需求。

5.10 动态优先级模式(Dynamic Priority Pattern)

用途:

复杂系统的抢占式多任务处理

实现:

根据运行中的变化自动更新任务的优先级。

优点:

  • 可满足复杂系统的需求。
  • 可实现更高的效率。

缺点:

  • 实现复杂。
  • 可能导致不公平性。

你可能感兴趣的:(可扩展的体系结构》,设计模式)