gpt4 book ai didi

c++ - objective c 是否需要一个标准来定义像 c++ 11 这样的内存模型?

转载 作者:行者123 更新时间:2023-11-28 04:35:06 24 4
gpt4 key购买 nike

我们知道 CPU 和编译器可能会重新排序我们的代码,当我们加载/存储共享内存时,如果我们不涉及锁(或一些类似的工具),结果是未定义的。 C++ 11 出现 memory model定义多线程操作共享内存时的行为。

OC 代码会被 clang 还是 CPU 重新排序?如果是这样,OC 是否应该有一个像 C++ 11 中的内存模型这样的标准?

最佳答案

您提供的内存模型链接基本上是这样说的:

  1. 线程之间存在竞争条件

  2. 缓存一致性问题,例如一个线程写入 A,然后写入 B,但另一个线程在 A 上的更改之前看到 B 上的更改,这是真实存在的。

  3. 线程之间的无锁编程非常难以正确实现,但如果您喜欢以困难的方式做事,这里就是绳子 (std::memory_order)。

  4. 使用锁原语(包括 std::mutex)是编写正确的多线程代码的解决方案。

即使 Objective-C 本身没有正式记录内存模型,同样的数据竞争和一致性问题仍然存在。使用正确的线程/锁定原语仍然是解决方案。

关于c++ - objective c 是否需要一个标准来定义像 c++ 11 这样的内存模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701613/

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