我有一个 TI DSP(TMS320F28235,如果有人关心的话),我需要实现一个 FIFO,用于在主循环代码和中断之间排队信息。该队列的高速执行非常关键,但正确的操作也很重要,我不确定是否可以在没有任何显式同步的情况下实现 FIFO,或者如果不能,我必须禁用中断。
我找到了this page并想知道这里是否有人可以对其适用性发表评论。
最佳答案
您找到的页面完全适合您的情况。它仅依赖于原子的字读取和写入。它很容易受到默默地重新排序加载和存储的硬件的影响。另一方面,人类已知的几乎所有其他同步算法也容易受到该特定漏洞的影响。
如果您想做一些严肃的计算机考古工作,请挖掘 CDC 6600 操作系统的循环缓冲区描述。 CDC 最初开发了用于 6600 中多个物理处理器之间通信的技术。
关于embedded - 嵌入式系统中线程安全的单消费者、单生产者 FIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022889/