我知道我们可以通过使用原子锁变量实现互斥来检测和克服竞争条件,但是有没有办法在不实现互斥的情况下检测竞争条件呢?
互斥极大地增加了开销,所以我在想一种方法来克服竞争条件,而不需要任何额外的开销。
发布于 2013-12-24 03:12:36
同步根本不需要增加太多开销。通常有相当便宜的合适的方法来解决问题。如果你在这方面遇到了问题,如果你发布了你的场景的详细信息,以及你正在使用什么同步技术来保护它,我们也许能够提供一些建议。
至于避免同步的需要,确实没有好的方法。这是一个在并发编程中必须处理的问题。在许多情况下,您可以完全避免需要多个线程,而在其他情况下,您可以尽可能地隔离线程,并将同步需求减少到少数几个关键位置。例如,在许多情况下,我喜欢使用消息线程的概念,让一个线程负责所有的记账和数据访问。然后,工作线程将消息发送到此线程(使用同步队列)进行处理。这样做意味着我只需要提供一个同步的消息队列,所有其他操作都可以独立进行。
希望这能有所帮助!如果您需要更具体的想法/建议,请随时发布更多详细信息。
https://stackoverflow.com/questions/20749518
复制相似问题