gpt4 book ai didi

multithreading - 多个线程在缓冲区 : are there consistent arguments stating that it is dangerous? 上写入相同的数据

转载 作者:行者123 更新时间:2023-12-04 06:40:09 24 4
gpt4 key购买 nike

想象这样一种情况,其中多个线程可以写入某个缓冲区(对其大小没有限制)并且所有这些限制都适用:

  1. 在所有线程启动之前,缓冲区被初始化为零。
  2. 一个线程可以写也可以不写。
  3. 如果一个线程在缓冲区上写,它会写一个特定的字节串(我们称之为VV不仅由零组成而且是相同的对于所有线程)。
  4. 没有线程从缓冲区读取。
  5. 一个线程在缓冲区上写入的事实,以及它在缓冲区上写入的内容,并不取决于其他线程是否在缓冲区上写入过。
  6. 如果一个线程开始写入缓冲区,那么它将完全写入。
  7. 线程在不遵循字节的精确顺序的情况下写入缓冲区。

问题是:在所有线程都停止之后(如果它们已经开始写入缓冲区,这只会发生),我可以保证,在任何现实世界或至少似是而非的架构下:

  1. 要么缓冲区包含全零,
  2. 或者缓冲区恰好包含 V

如果不是,是否有任何一致的论据表明可以写入另一个字节串,称之为 V'?如果是这样,VV' 之间的区别是什么?为什么?

最佳答案

数字 6 似乎是关键,它基本上表明对缓冲区的写入是原子的且不可中断的。因此,内容要么是 0,要么是一致的 v

当然,这不是线程的正常情况,除非您使用互斥锁之类的东西。

关于multithreading - 多个线程在缓冲区 : are there consistent arguments stating that it is dangerous? 上写入相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597969/

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