阻塞和非阻塞的区别

阻塞赋值与非阻塞赋值的区别

阻塞赋值(=):假如有两条赋值语句,阻塞赋值是两条语句顺序执行,先完成前一条语句的赋值,再完成下一条赋值语句的赋值。

非阻塞赋值(<=):假如有两条赋值语句,非阻塞赋值相当于两条语句并行执行,前面语句的执行不会阻塞后面语句的执行

两条语句的使用场合

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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Unix/Linux系统中,管道(pipe)是内核提供的一种半连接通信机制,它允许进程间通过文件描述符(file descriptor, fd)进行数据交换。当管道的fd设置为阻塞阻塞模式,会影响到读写操作的行为。 **阻塞模式(Blocking):** 当fd设置为阻塞模式时,如果试图从管道读取数据但管道为空(没有数据),或者向管道写入数据但管道已满,操作系统会将调用该操作的线程挂起,直到有数据可读或空间可用。阻塞模式保证了数据的一致性,适合于处理顺序执行、不需要立即响应的情况。 **阻塞模式(Non-blocking):** 在阻塞模式下,同样的操作会立即返回,如果管道没有数据或空间,操作系统不会阻塞,而是直接返回错误,如`EAGAIN`(资源暂时不可用)。这使得进程能够更高效地处理并发,因为线程不会因等待IO而阻塞其他操作,适用于事件驱动或高并发场景,但需要程序自行管理IO状态和错误检查。 设置阻塞阻塞的主要差别在于性能、可扩展性和应用程序的复杂性: 1. **性能**:阻塞模式通常更快,因为它减少了不必要的线程阻塞,提高了系统的吞吐量。 2. **并发能力**:阻塞模式支持高并发,因为多个线程可以同时尝试进行I/O操作,而阻塞可能导致线程竞争同一资源。 3. **代码复杂性**:阻塞模式需要更多的错误检查和同步逻辑,否则可能会导致数据丢失或死锁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值