我知道我们可以通过使用原子锁变量实现互斥来检测和克服竞争条件,但有没有办法在不实施互斥的情况下检测竞争条件?
相互排斥会使开销大大增加,因此我想到了一种克服竞争条件而无需额外开销的方法。
答案 0 :(得分:1)
同步根本不需要增加开销。通常有相当便宜的合适方法来解决问题。如果您遇到问题,如果您发布了方案的详细信息以及您用来保护它的同步技术,我们可能会提供一些建议。
至于避免同步的需要,确实没有好办法。这是您在并发编程中必须处理的问题。在许多情况下,您可以完全避免需要多个线程,在其他情况下,您可以尽可能地隔离线程,并减少与几个关键位置同步的需要。例如,在许多情况下,我喜欢使用消息线程概念,其中我有一个线程负责所有簿记和数据访问。工作线程然后将消息发布到此线程(使用同步队列)进行处理。这样做意味着我只需要提供一个同步的消息队列,所有其他操作都可以独立进行。
希望这有帮助!如果您想要更具体的想法/建议,请随时发布更多详细信息。