我有一个生产者一个消费者模型,我需要生产者在数据可用时设置一个标志.我怀疑我可以在没有锁定共享标志的情况下离开,因为:
所以我的问题是,我该如何实现呢?我对volatile关键字的理解,以及像__sync_synchronize()这样的事情充其量是微不足道的,所以假设我知之甚少.具体来说,我希望能够确保在其他线程中及时看到对标志的更改.
编辑:我在Linux上使用GCC.
原子操作意味着(非常简单地)阻塞其他原子操作,直到第一个操作完成。
我假设我们正在谈论线程,因此我们应该考虑互斥体(但这也适用于进程和信号量)。可以检查(读取)互斥锁(或信号量),而无需尝试获取锁。
如果互斥量(信号量)的状态是已锁定,请继续进行其他操作,稍后再试。