我有一个c++应用程序,它会不断更新特定的共享内存块。我还有另一个dotnet核心应用程序,每当需要数据时,它都会从该块读取数据。目前我正在使用一个同步标志,每当c++应用程序开始更新时,它都会将标志设置为真,并在更新完成后将其设置为假。Dotnet核心应用程序在读取之前检查标志是否为假。但我认为这种方法存在一些问题。有没有其他方法可以做到这一点?
发布于 2021-02-15 16:00:22
是的,它被称为“互斥”。从本质上讲,这意味着你“锁定”了一个资源,并且只有在你使用完它之后才给它免费。确保其他应用程序不能更改变量/数据,这反过来会防止某些形式的竞争条件。通常使用标志和互斥锁的组合。在读写期间互斥一个变量,并在该操作完成时设置标志.读取时的互联式确保数据不会在写入操作中途读取,因为写入是不可能的,反之亦然,从而导致损坏(竞争条件)。还有很多其他的方法。谷歌“多线程资源管理”或“并发”以获取更多信息。并查看wiki
https://stackoverflow.com/questions/66204376
复制相似问题