互斥还是不互斥?

5 c++ windows multithreading mutex

如果我只有一个读者和一个作家,我需要互斥吗?读取器food.front()从队列中获取下一个command()并根据该命令执行任务.执行命令后,它会弹出命令.队列的编写者将命令推送到队列(food.push())上.

我需要互斥锁吗?我的读者(消费者)只执行if food.size() > 0.我正在使用读者线程并发送线程.

GMa*_*ckG 10

互斥锁用于多线程环境.我在你的问题中没有提到线程,所以我认为不需要互斥锁.

但是,如果我们假设读者和编写者意味着你有两个线程,则需要使用互斥锁(或其他多线程保护方案)保护相互数据.

当队列有项目时会发生什么,并且当编写器线程放入某些内容时,读取器线程会弹出一些内容?灾害!使用互斥锁,您将确保一次只有一个线程在队列中运行.

另一种方法是无锁线程安全队列.它将使用原子操作来确保不会错误地操作数据.