gpt4 book ai didi

c++ - 在线程之间共享变量的方法

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

我有一个关于 C 和 C++ 并行编程的一般性问题,如果您能回答我将不胜感激。据我所知,我们至少可以在更高一级(父线程)声明一个变量,以便在子线程之间共享它。所以,我想知道是否有任何其他方法可以在具有相同父线程的线程之间共享变量?这个 API 是否依赖?

最佳答案

对于 Posix 线程,阅读一些 pthread tutorial .

对于 C++11 , 阅读其 thread library 的文档

全部threads相同的 process分享相同 address spacevirtual memory .正如 Marco A. 评论的那样也可以考虑 thread_local变量。

请注意您共享数据或 memory (不是变量,只存在于源代码中)

在实践中,您最好使用 mutex 进行保护避免共享数据(用于同步)data races .

在简单的情况下,互斥量和共享数据在一些全局变量中。

你也可以使用 atomic操作。

顺便说一句,您还可以使用一些 message passing 开发并行应用程序范例,例如使用 MPI (或者简单地使用一些 RPC 或其他消息,例如套接字上的 JSON)。您可能会考虑在常规数值应用程序中使用 GPGPU,例如使用 OpenCL .当然,您可能会混合使用所有方法(使用 OpenCL,使用多个线程,并让您的并行软件在多个此类进程中运行并与 MPI 通信)。

调试高度并行的软件可能会变成一场噩梦。性能可能取决于硬件系统并且可能需要棘手的调整。 scalabilitysynchronization可能成为一个日益严重的问题。 map-reduce通常是一个有用的模型。

关于c++ - 在线程之间共享变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164726/

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