【发布时间】:2014-03-22 22:10:01
【问题描述】:
我一直在玩 gtkmm 和多线程 GUI,偶然发现了 mutex 的概念。据我所知,它的目的是为单个线程锁定对变量的访问,以避免并发问题。我理解这似乎很自然,但是我仍然不明白应该如何以及何时应该使用 mutex。我已经看到了几种使用互斥锁仅被锁定以访问特定变量(例如like this tutorial)的情况。应该对哪种类型的变量/数据使用互斥锁?
PS:我在这个主题上找到的大多数答案都相当技术性,由于我不是这方面的专家,所以我更多地寻找一个概念性的答案。
【问题讨论】:
-
任何可以有至少一个并发写入器/设置器与任何其他操作(另一个写入器/设置器或一些相关读取器/获取器)的任何东西都需要某种互斥锁定。我很难说得比这更简单。锁定的形式可能会有所不同,但这个概念实际上就是这么简单。未能提供排他性会降级为可能(并假设它们会)导致非确定性行为的竞争条件。
标签: c++ multithreading pthreads gtkmm