进程互斥中TSL和Swap的区别?

大河向东流啊流 2020-03-10 01:06:46
两个指令好像运行的时候差不多,优缺点也相似,那有什么区别呢?
...全文
1117 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这两个指令的确实相似,操作原子,忙式等待,都是需要硬件支持的,在实现上,swap需要两个参数,不需要返回值,而test_and_set则是需要借助一个共享变量来实现互斥,具体的实现细节不需要考虑,但是大体的设计方向是一致的。
此外,在多处理器的计算机中,tsl指令是比较常见的,他可以实现多处理器的互斥,执行tsl指令的CPU会锁住内存总线,在这次的指令周期,准确的说,应该是在本次指令执行结束之前,不允许其他CPU访问内存。
至于swap指令,你可以想一下,这条指令的本质是一把钥匙开一把锁,那如果存在多把锁的时候呢?多把锁锁住的变量相同或者不同呢?
两个指令所做的事情是一样的,但是由于指令的设计,导致他们所能做的事情是有所差别的。
就如数学中:A和B的交集不为空,但是A又不等于B

427

社区成员

发帖
与我相关
我的任务
社区描述
非技术问题的乐园
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧