gpt4 book ai didi

c++在线程之间共享状态的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:39 25 4
gpt4 key购买 nike

场景如下:线程 A 一直执行,直到它收到线程 B 的停止信号,线程 B 一直从控制台读取输入。

实现它的最佳方法是什么?例如,我想我可以将它实现为线程 A 每隔一段时间检查一次的全局变量,线程 B 可以更改为发出“停止”信号,

但我不知道这是不是正确的方法。

  • 即使它是正确的,我应该使用“Volatile”还是“Atomic<>”?特别是线程 A 只读取变量的值,线程 B 只写入变量。

  • 如果在线程 A 读取后立即从线程 B 修改变量,这无关紧要(不会导致问题“线程 A 退出时间有点宽松(信号后可以容忍)”)?

  • 线程 B 是否有另一种方法来启动线程 A 并在需要时停止它?

最佳答案

这个问题可能会因为“过于宽泛”而被关闭,但我会尝试回答它(以同样的“宽泛”方式)。

这里唯一可以想到的答案是:“视情况而定”(c)

一般建议:尝试并保持简单 ( KISS principle )。从一个简单的解决方案开始(例如您的情况下的互斥锁),如果您发现它不令人满意,请将其替换为另一个更复杂但高效/可扩展/可定制/令人愉快的东西(比如说原子)。如果其中的任何一个被证明是不够的,进一步增加复杂性(放松原子性,添加无锁的东西,建立基于任务的并发,无论你可能需要什么)直到找到合适的平衡。

关于c++在线程之间共享状态的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28567325/

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