lock的本质就是你得到锁,完成你的工作,然后你知道在这种状态下没有人可以打扰你,最后你释放了锁
lock-free的本质是你在其他地方安心的做你的事情,当你做完之后,你原子级别的提交这段共走量到可见区,如果失败你会不断的重复去尝试。实现的本质是基于处理器的CAS(事务内存 std::atomic
相关lock-free的一些思考有:
两者还有一个比较的区别就是一个lock的program当一个线程拿到lock之后可以直接把整个程序都给block, 但是lock-free的程序即使在线程被suspended的情况下,仍然可以运行(通过不断的retry commmit机制),比如下面的两端代码
一种是lock的版本,一种是lock-free的版本,假设我们有100多个线程同时运行,在lock的版本中,线程的运行依赖其他线程的lock的释放。但是对于Lock-free的版本,所有的线程都可以同步开展,如果一个线程被拦截,只有这个线程的成果不会被共享,但是其他线程仍然可以运行
PS:
页面更新:2024-04-16
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号