gpt4 book ai didi

c++ - 项目中共享模型的多线程同步

转载 作者:行者123 更新时间:2023-12-01 14:49:42 24 4
gpt4 key购买 nike

我现在正在编写一个多线程应用程序(准确地说是游戏)作为业余爱好/研究项目。我最近遇到了一个非常“简单”的问题,那就是在线程之间进行同步(如果它对你很重要,它是在 C++ 中)。

我的主要问题是——我尝试学习好的设计,并尽可能地互斥我的整个模型,(在我看来)是资源浪费,并且只是在进一步开发中提出问题。我曾经想过让同步事务的整个过程基于事务,但我觉得它不适合游戏类型所需的性能/扩展性。我是并发编程的新手,我来这里是为了学习有关并发编程特定模式的新知识。

关于当前设计的一些话:

  • MVC 方法
  • 在线同步由单独的代理处理,它在从客户端和主服务器上是相同的,并且与任何服务器逻辑分开处理
  • 类似数据库的结构正在与服务器逻辑不可靠地同步,并且内置了一些小的订阅/观察者模式来通知 Controller 有关更改的信息。

  • 笔记
  • 我不寻找文档特定的信息(如果它们与性能或设计没有直接关系),我知道我的 cppreference ,
  • 我确实在寻找一些可以教我更多关于并发设计模式的广泛的博客文章/网站,
  • 我确实想知道我是否只是简单地做错了事情(虽然不是以错误的顺序)。

  • 编辑

    就像迈克提到的,我没有问这个问题:

    1)可用于并发编程的最佳设计模式/规范是什么(在我的情况下主要可用),

    2) 在并发编程性能方面,最大的障碍是什么。

    最佳答案

    你是从一个错误的想法开始的。并行是关于性能的,并发是关于正确性的。并发系统不一定是最快的解决方案。一个好的并发系统最小化并明确定义依赖;以最小的延迟实现强大的响应式(Reactive)系统。相比之下,并行系统寻求通过最大化其资源利用率来最小化其执行时间;在这样做时,它可能会最大化延迟。有重叠,但思维方式却大不相同。

    有很多好的并发语言。 C++ 不是其中之一。也就是说,您可以用任何语言编写好的并发系统。大多数并发语言都有很强的消息传递倾向,但大多数语言都可以使用良好的消息传递库。

    消息传递不同于低级同步机制,因为它本身就是一种模型或思维方式。互斥体、信号量等……不是。它们是工具,在设计合理完成之前可能应该被忽略。

    设计阶段应该比同步机制更抽象。理想情况下,它应该对操作(或事务,如果您愿意)以及它们之间的必要交互进行脱粒。从该模式中,关于如何安排数据和代码以进行并发访问的选择应该是很自然的。如果不是,则您的架构不完整。

    关于c++ - 项目中共享模型的多线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833473/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com