|
使用两个并行的两个循环分别去读取和写入同一个变量会造成竞争。当其中一个循环在读取该局部,全局或者是共享变量的值时,另外一个循环恰好对该变量进行写入的操作就会发生上述的问题。如果两个循环的同步没有做好的话,变量的值可能在被写入前就被读取了,反之亦然。
使用Producer/Consumer (生产者/消费者)设计模式中的队列时就可以避免数据的空缺或者溢出,该设计模式提供了同步的功能因为消费者循环只有在队列中有数据的时候才会执行。
另外一种方法是使用 Semaphores(信号量)来锁住正在写入的变量防止竞争状态。
|