我有一个共享内存供其他进程读取,读取进程的数量可能不止一个。
我需要一把锁,大多数时候都锁着。在共享内存上应用更新后,它将被解锁并再次快速锁定。
读取进程可以使用此锁来接收更新通知。当读取进程成功获取锁时,意味着共享内存被更新。当读取过程未能锁定,结果为TIME_OUT时,意味着共享内存中没有更新
当共享内存得到一些更新并解锁时,ALL读取过程可以获得锁定
有解决这个锁的办法吗??
不同的用例有不同的同步原语。锁旨在确保每次对资源进行一次访问。但是,为了向一群读者发出一些数据已经准备好的信号,您应该使用一个事件。
来自关于事件对象的Microsoft文档:
[应用程序可以使用]事件对象来防止多个线程在主线程写入共享内存缓冲区时从该缓冲区中读取。
您将使用CreateEvent
来创建事件对象,然后在使用者线程中使用WaitForSingleObject
(或任何其他等待函数(,并使用SetEvent
来发出数据准备就绪的信号。ResetEvent
函数可以用来发出消费者线程不应该使用它的信号