阻塞和非阻塞的区别是,在捕捉一个子进程退出的时候,阻塞则会一直等待,直到这个子进程退出,返回对应的值,而非阻塞,如果刚好捕捉到子进程的退出则直接输出。
一、阻塞和非阻塞
阻塞和非阻塞指的是调用者(程序)在等待返回结果(或输入)时的状态。阻塞时,在调用结果返回前,当前线程会被挂起,并在得到结果之后返回。非阻塞时,如果不能立刻得到结果,则该调用者不会阻塞当前线程。因此对应非阻塞的情况,调用者需要定时轮询查看处理状态。
阻塞:为了完成一个功能,发起一个调用,如果不具备条件的话则一直等待,直到具备条件则完成
非阻塞:为了完成一个功能,发起一个调用,具备条件直接输出,不具备条件直接报错返回
二、区别
其实就相当于在捕捉一个子进程退出的时候,阻塞则会一直等待,直到这个子进程退出,返回对应的值,而非阻塞,如果刚好捕捉到子进程的退出则直接输出,如果没有捕捉到,也不进行等待,直接输出报错。
延伸阅读
阻塞赋值与非阻塞赋值的使用场合
(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