共享内存中的同步

时间:2021-02-15 07:53:20

标签: c++ .net-core synchronization shared-memory

我有一个 C++ 应用程序,它不断更新共享内存的特定块。我还有另一个 dotnet 核心应用程序,它在需要数据时从该块读取。目前我正在使用一个标志进行同步,每当 c++ 应用程序开始更新时,它都会将该标志设置为 true 并在完成后设置为 false。 Dotnet 核心应用程序在读取之前检查标志是否为假。但我认为这种方法存在一些问题。 有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

是的,它被称为“互斥锁”。这本质上意味着你“锁定”了一个资源,只有当你完成它时才免费提供它。确保其他应用程序无法更改变量/数据,从而防止某些形式的竞争条件。经常使用标志和互斥锁的组合。在读写过程中互斥一个变量,并在该操作完成时设置标志。读取时互斥确保数据不会在写入操作中途被读取,因为写入是不可能的,反之亦然,从而导致损坏(竞争条件)。还有很多其他的方法。谷歌“多线程资源管理”或“并发”了解更多信息。并查看wiki