我有一个共享内存供其他进程读取,读取进程的数量可能不止一个。
我需要一把锁,它大部分时间都锁着。当更新应用到共享内存上时,它将被解锁并再次快速锁定。
读取过程可以使用此锁接收更新通知。当读取进程(Es)成功地获得锁时,它意味着共享内存被更新.当读取进程无法使用TIME_OUT的结果锁定时,这意味着共享内存中没有更新。
当共享内存得到一些更新并解锁时,ALL读取进程就可以获得锁。
有办法解决这个问题吗?
发布于 2022-01-14 07:56:00
对于不同的用例,有不同的同步原语。锁定的目的是确保每次对资源的单一访问。但是,要向一群读者发出一些数据已经准备好的信号,您应该使用一个事件。
来自Microsoft关于事件对象的信息:
应用程序可以使用事件对象来防止多个线程在主线程向该缓冲区写入时从共享内存缓冲区中读取。
您将使用CreateEvent来创建您的事件对象,然后在您的使用者线程中使用WaitForSingleObject (或任何其他等待函数),并使用SetEvent来表示数据已经就绪。ResetEvent函数可以用来表示使用者线程不应该使用它。
https://stackoverflow.com/questions/70707431
复制相似问题