gpt4 book ai didi

c - 竞争条件也可能发生在传统的单线程程序中 - Clarity

转载 作者:太空狗 更新时间:2023-10-29 17:06:15 24 4
gpt4 key购买 nike

在过去的几个月里,我读了一些关于并行编程的书,我决定通过学习 posix 线程来结束它。

我正在阅读“PThreads 编程 - 更好的多处理简明手册的 Posix 标准”。在第 5 章(Pthreads 和 Unix)中,作者讨论了在多线程程序中处理信号。在“Threadsafe Library Functions and System Calls”一节中,作者做了一个我在读过的大多数关于并行编程的书中都没有看到的声明。声明是:

Race conditions can also occur in traditional, single-threaded programs that use signal handlers or that call routines recursively. A single-threaded program of this kind may have the same routine in progress in various call frames on its process stack.

我觉得解读这个陈述有点乏味。当递归函数使用静态存储类型保持内部结构时,是否会出现递归函数中的竞争条件?

我也很想知道信号处理程序如何导致单线程程序中的竞争条件

注意:我不是计算机科学专业的学生,​​我非常感谢简化的术语

最佳答案

我认为不能将其称为经典意义上的竞争条件。竞争条件具有某种随机行为,具体取决于调度程序策略和时间安排。

作者可能在谈论从多个递归调用访问同一对象/资源时可能出现的错误。但这种行为是完全确定的和可管理的。

另一方面,信号是一个不同的故事,因为它们是异步发生的,并且显然可以在中间中断一些数据处理并触发对该数据的一些其他处理,当返回到被中断的任务时破坏它。

关于c - 竞争条件也可能发生在传统的单线程程序中 - Clarity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497666/

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