缓存一致性协议在硬件低级的多核上下文中是众所周知的,但是,我们将在应用领域中遇到类似的情况。最近,我正在开发一个项目,它有两个线程来更新共享对象。
由于我们有很多对象(50,000~100,000),每个线程必须将部分对象复制到自己的缓冲区中,更新共享对象是串行的。
所以这就带来了一个问题,如果有一个对象由两个线程更新,那么冲突是如何解决的?处理这种情况有什么共同的习惯用法吗?
答案 0 :(得分:0)
处理此问题的最简单方法是使用互斥锁。 UI在读取值之前锁定互斥锁,然后将其解锁。后台线程在更新值之前锁定互斥锁,然后将其解锁。
您可以让更新线程向UI发送通知消息,告诉它重新读取共享对象,如您所建议的那样。