阻塞和非阻塞的区别是什么

阻塞和非阻塞的区别是,在捕捉一个子进程退出的时候,阻塞则会一直等待,直到这个子进程退出,返回对应的值,而非阻塞,如果刚好捕捉到子进程的退出则直接输出。

阻塞和非阻塞的区别是什么-Worktile社区

一、阻塞和非阻塞

阻塞和非阻塞指的是调用者(程序)在等待返回结果(或输入)时的状态。阻塞时,在调用结果返回前,当前线程会被挂起,并在得到结果之后返回。非阻塞时,如果不能立刻得到结果,则该调用者不会阻塞当前线程。因此对应非阻塞的情况,调用者需要定时轮询查看处理状态。

阻塞:为了完成一个功能,发起一个调用,如果不具备条件的话则一直等待,直到具备条件则完成

非阻塞:为了完成一个功能,发起一个调用,具备条件直接输出,不具备条件直接报错返回

二、区别

其实就相当于在捕捉一个子进程退出的时候,阻塞则会一直等待,直到这个子进程退出,返回对应的值,而非阻塞,如果刚好捕捉到子进程的退出则直接输出,如果没有捕捉到,也不进行等待,直接输出报错。

延伸阅读

阻塞赋值与非阻塞赋值的使用场合

(1) 时序电路建模时,用非阻塞赋值。
(2) 锁存器电路建模时,用非阻塞赋值。
(3) 用always块建立组合逻辑模型时,用阻塞赋值。
(4) 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
(5) 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
(6) 不要在一个以上的always块中为同一个变量赋值。
(7) 用$strobe系统任务来显示用非阻塞赋值的变量值。
(8) 在赋值时不要使用#0延时。
组合逻辑电路:使用阻塞赋值(“=”);时序逻辑电路:使用非阻塞赋值(“<=”)

来源:本文为CSDN博主「闲庭信步sss」的原创文章
原文链接:https://blog.csdn.net/spx1164376416/article/details/124289951

文章标题:阻塞和非阻塞的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37945

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编的头像小编

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部