竞争条件也可能出现在传统的单线程程序中 - Clarity

0.s*_*.sh 7 c multithreading pthreads

在过去的几个月里,我已经阅读了几本关于并行编程的书籍,我决定通过学习posix线程来关闭它.

我正在阅读" PThreads编程 - 更好的多处理坚果壳手册的Posix标准 ".在第5章(Pthreads和Unix)中,作者讨论了在多线程程序中处理信号.在" Threadsafe库函数和系统调用 "一节中,作者发表了一篇声明,我在大多数书中都没有看到我读过并行编程.声明是:

竞争条件也可能发生在使用信号处理程序或递归调用例程的传统单线程程序中.这种单线程程序在其进程栈上的各种调用帧中可能具有相同的例程.

我觉得破译这句话有点乏味.当递归函数使用静态存储类型保持内部结构时,是否会出现递归函数中的竞争条件?

我也很想知道信号处理程序如何在单个线程程序中引起比赛条件

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

Eug*_*Sh. 8

我不认为人们可以称之为古典意义上的竞争条件.竞争条件具有某种随机行为,具体取决于调度程序策略和时间.

作者可能正在讨论当从多个递归调用访问相同的对象/资源时可能出现的错误.但这种行为完全是确定性的和易于管理的.

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