我在这个主题上已经看到了一些问题,但是我没有得到我想要的答案,因此再次提出这个问题。在其中一次采访中,我得到了一个大的链表,说百万个节点。列表上的操作将是搜索(读取)和搜索+替换操作(写入)。问题是我更喜欢这些操作的锁定原语吗?
如此长的列表,我显然不会选择自旋锁,因为等待线程最终会占用大量的CPU周期。 此外,我无法使用每个节点互斥,因为它是搜索和替换操作,并将要求收集列表中的所有锁。 所以我回答,读写信号量。写信号量将具有高优先级,以避免优先级继承问题。所有读取也可以同时进行。
基于这个答案我被拒绝了:p。我不太确定我的想法是否对于给定的问题是正确的。如果我的概念错了,有人可以纠正我吗?