【C++学习(37)】并发性模式:如生产者-消费者、读写锁等。 架构模式:如MVC、MVVM等。属于23 种设计模式吗? RAII 的关系?

news/2024/11/15 15:19:33/

并发性模式(如生产者-消费者、读写锁等)和架构模式(如 MVC、MVVM 等)并不属于 Gang of Four(GoF) 提出的 23 种经典设计模式 中。这些模式是其他领域中的设计模式,虽然它们和 GoF 的设计模式有交集,尤其是在程序架构和资源管理方面,但并不直接包含在 GoF 的 23 种设计模式内。

文章目录

      • 1. 并发性模式(Concurrency Patterns)
      • 2. 架构模式(Architectural Patterns)
      • 3. 23 种经典设计模式
      • 4. GoF 23 种设计模式与并发/架构模式的关系
      • 5 RAII(Resource Acquisition Is Initialization)
        • 1. RAII 与并发性模式
        • 2. RAII 与架构模式
        • RAII 通过自动化资源管理为许多设计模式提供支持
      • 总结

1. 并发性模式(Concurrency Patterns)

并发性模式主要用于解决多线程环境中资源共享、线程同步、任务协调等问题。这些模式和 GoF 的设计模式有些重叠,尤其在 行为型模式 或 对象之间的协作 的实现上,但它们专门针对并发编程中的问题。

常见的并发性模式包括:

  • 生产者-消费者模式(Producer-Consumer Pattern):协调两个线程(生产者和消费者)之间的工作,通常通过一个共享缓冲区来实现。
  • 读写锁模式(Read-Write Lock Pattern):允许多个线程同时读取数据,但在写操作时只允许一个线程进行写操作,从而提高并发性能。
  • 线程池模式(Thread Pool Pattern):维护一个线程池,多个任务被提交到线程池,由池中的线程来执行,避免频繁创建和销毁线程的开销。
  • 单例模式(Singleton Pattern):虽然是 GoF 的设计模式,但它在并发模式中经常与线程同步机制结合使用,以确保在多线程环境下只有一个实例。

这些并发模式是 并发编程 和 多线程编程 中常用的设计模式,尽管 GoF 并没有单独讨论它们,但它们在实际开发中广泛使用,尤其在涉及共享资源的并发应用中。

2. 架构模式(Architectural Patterns)

架构模式主要是描述系统的高层结构,如何组织不同的组件或模块,以实现系统的整体架构设计。这些模式与 GoF 23 种设计模式的目标不同,GoF 设计模式关注的是类与对象的关系和交互,而架构模式通常关注系统的层次结构、模块划分等更宏观的设计。

常见的架构模式包括:

  • MVC(Model-View-Controller):将系统分为三部分:

http://www.ppmy.cn/news/1547226.html

相关文章

部署神经网络时计算图的优化方法

部署神经网络时计算图的优化方法 部署神经网络时,各路框架基本都会把神经网络的计算建模为一个(有向无环的)计算图,之后再对这个计算图进行优化,包括硬件相关的优化和硬件无关的优化。本文介绍几种部署神经网络时计算…

【热门主题】000049 人工智能学习框架:开启智能未来的钥匙

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…

云时代基础设施模型:可变与不可变之析

在基础设施管理的领域中,存在两种起着主导作用的方法,也就是可变基础设施与不可变基础设施。它们决定着资源的部署以及维护的模式,对更新的实施途径、基础设施的演进方向,还有不同环境之间的一致性保障起着关键的作用。 可变基础设…

梧桐数据库分区表提高查询效率的策略分析

梧桐数据库分区表提高查询效率的策略分析 概述 在大数据时代,数据库的性能优化成为了一个重要议题。分区表作为一种有效的数据库优化手段,通过将大型表分割成多个小的、可管理的分区,可以显著提高查询效率和数据管理的便利性。本文将详细探…

Unity6 + Android Studio 开发环境搭建【备忘】

目录 版本兼容异常 软件下载 SDK与NDK下载 配置路径 打包APK 版本兼容异常 背景:本机有段时间没使用过Unity开发项目了,本机安装有Android Studio老版本。 尝鲜Unity6新版本,选择Mobile模板工程,切换至Android平台&#xff…

计算机网络-网络编程

一、客户端和服务器 学习传输层给应用层提供的api,可以写代码把数据交给传输层,进一步通过层层封装就可以把数据通过网卡发送出去了 网络中主动发起请求的一方被称为客户端,被动接收的一方被称为服务器 客户端和服务器之间的交互有很多模式…

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…

.NET 中的虚拟内存

在 .Net 中,虚拟内存是由操作系统管理的地址空间,允许应用程序在可用物理内存(RAM)之上分配和使用更多的内存。C# 程序(或 .NET 程序)运行在 .NET 公共语言运行时(CLR)上&#xff0c…