首页 > 解决方案 > 信号量如何保护共享数据?

问题描述

为什么我们可以允许多个线程同时运行?(sem_init(&sem,0,5)),我认为这意味着可以运行 5 个线程。那么为什么不会出现竞态条件>

标签: cmultithreadingsemaphore

解决方案


sem_wait不计其数,sem_init确实如此。但是您的基本问题仍然有效。

信号量通常不打算停止数据竞争。它们用于您希望一次运行最多 n 个消费者的情况。

您应该phtread_mutex用于数据竞争预防


推荐阅读