因此,出于某些原因,我很难掌握完整的概念,即为什么“测试和测试并设置”功能比标题中的书中的“测试和设置”功能更快。让我详细说明.......
在以上附录中的引用书中,它稍微涉及到了计算机体系结构。我已经对此有了相当不错的了解。继续总结,由于缓存,TTAS比TAS功能更快。我不知道这是如何或为什么。 TTAS功能不会像TAS功能那样缓存。 TAS功能的哪一部分导致其工作时间更长,或者什么原因导致TTAS功能工作时间缩短。
最佳答案
每个线程都有自己的缓存。仅当变量标记为脏时才更新缓存。无论是否成功设置值,TAS(在OS级别)都在每次调用变量时将其标记为脏。这就是造成大量开销的原因。
因此,所有线程始终使缓存无效。在TTAS情况下,您避免了调用TAS的次数过多,因此只会使TAS调用和释放锁定时的缓存(现在更为罕见)无效。
请记住,这就是我们所教的内容,并且我没有给您引用,因此您可能希望进一步引用。
关于multithreading - TAS Vs的更好解释。 “The Art Of Multiprocessor Programming” Herlihy&Shavits上下文中的TTAS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26322991/