了解线程安全

时间:2019-04-28 18:19:32

标签: thread-safety binary-tree binary-search-tree

让我们以标准二进制搜索树为例,它的节点具有封装的值以及指向左,右子级及其父级的指针。它的主要方法是addNode()removeNode()searchNode()

我想了解如何使我的数据结构安全。但是,我对线程安全性了解不多,想问一下我在想什么是正确的。

我的第一个问题是决定权:当我有并发方法时我想发生什么?假设我正在使用BST管理游戏中的地图:玩家角色的位置由double数组表示,我按照字典顺序将玩家的位置存储在BST中。一个玩家摧毁了一个目标(他的线程想要从我的地图上删除它),但是另一位玩家正在发起攻击,并且需要在距他一定距离内的所有可能目标的列表,包括刚刚移除的目标(并且他的线程想要执行将包含目标的搜索)。我如何处理情况?那其他情况呢?

我的第二个问题(我认为)是我最大的问题,这是促动因素之一:我如何使自己想发生的事情发生。我了解了诸如原子操作,线性,无障碍,无锁,无等待之类的内容。我从来没有在一个地方为每个策略找到一个简单的定义,即该策略的优点和缺点。那是什么东西如果我锁定节点,或者将指针锁定到其他节点,或者值封装在节点中,该怎么办?

我是否正确理解线程安全的问题?您对我应该考虑的问题有什么建议,或者对我应该阅读的书面论文和pdf有什么建议,以便更好地理解问题及其解决方案?

0 个答案:

没有答案