事件等待(@event与wait(event.triggered))

1、@event有竞争问题

program test;
    event e1;
    initial begin
        #10 ->e1;
    end
    initial begin
        #10 @e1;
        $display("hello");
    end
endpropram

在这个例子中,事件的触发(->e1)和事件的检测(@e1)都是在10ns的时候发生,这个时候就有竞争问题,看那个进程先执行(一般是上部分的代码先执行),这样就会导致有的时候能够检测到事件,输出"hello",有的时候则不能检测到。

2、wait(event.triggered)没有竞争问题

program test;
    event e1;
    initial begin
        #10 ->e1;
    end
    initial begin
        #10 wait(e1.triggered);
        $display("hello");
    end
endpropram

同样是事件的触发(->e1)和事件的检测(@e1)都是在10ns的时候发生,但是这个时候没有竞争问题,event.triggered可以检测到当前触发的事件,所以一定会输出hello。

原文地址:https://www.cnblogs.com/yuandonghua/p/11991956.html

时间: 2024-08-02 19:17:42

事件等待(@event与wait(event.triggered))的相关文章

兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法

兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法 // 获取事件function getEvent(){ if(window.event) {return window.event;} func=getEvent.caller; while(func!=null){ var arg0=func.arguments[0]; if(arg0){ if((arg0.constructor==Event || arg0.constructor ==MouseEv

javascript事件学习(3)-Event对象

3.事件对象 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包含导致事件的元素.事件的类型以及其他与特定事件相关的信息.所有的浏览器都支持event对象,但支持的方式不同. event对象本身就是一个构造函数,可以用来生成新的实例. event = new Event(typeArg, eventInit); Event构造函数接受两个参数.第一个参数是字符串,表示事件名称,第二个参数是一个对象,表示事件对象的配置. var ev = new E

JavaScript之DOM-8 Event对象(事件概述、事件处理、event对象)

一.事件概述 事件概述 - 当用户与 Web 页面进行某些交互时,解释器就会创建相应的event对象以描述事件信息.常见的事件有: - 用户点击页面上的某项内容 - 鼠标经过特定的元素 - 用户按下键盘上的某个按键 - 用户滚动窗口或改变窗口大小 - 页面元素加载完成或加载失败 - ... - 1995年 IE4 浏览器就已经定义了自己的事件模型,而DOM模型2004年才最终确定标准的事件模型,并被其它浏览器所支持.所以事件处理需要注意兼容性问题 事件句柄 - 事件句柄(又称事件处理函数.事件监

阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event.preventDefault()方法 这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 3.return false  : 这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件:写上此代

JS 之 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

在前端开发中,有时我们需要阻止冒泡和阻止默认事件的发生. 一.event.stopPropagation() 阻止事件的冒泡,不让事件向documen上蔓延,但是默认事件任然会执行,当调用这个方法的时候,如果点击一个连接,这个连接仍然会被打开. 二.event.preventDefault() 阻止默认事件的方法,调用此方法时,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 三.return false: 这个方法比较暴力,会同时阻止事件冒泡也会阻止默认事件:写上此代码,连接不会被

event.currentTarget与event.target

无意中在一段源码里看到event.currentTarget这个属性,这个与熟悉的event.target还是有所差别的. event.target是指事件发生的源,在哪个元素上发生的.event.currentTarget 就是通过addEventListener绑定的DOM元素.事件是可以通过冒泡进行传递的.通过冒泡触发的事件event.target 跟event.currentTarget是不相同的元素. 引用网上的一段英文:Event objects also have target p

event.target和event.currentTarget的区别

target:触发事件的元素.currentTarget:事件绑定的元素.两者在没有冒泡的情况下,是一样的值,但在用了事件委托的情况下,就不一样了,例如: <ul id="ulT"> <li class="item1">fsda</li> <li class="item2">ewre</li> <li class="item3">qewe</li&g

关于js中return false、event.preventDefault()和event.stopPropagation()

在平时项目中,如果遇到需要阻止浏览器默认行为,大家经常会用return false;和event.preventDefault()来阻止,但对它俩的区别还是有些一知半解,于是看了文档,查了些资料,在此总结下它俩的区别,顺便带上event.stopPropagation()一起区分下. 一.原生js中: 关于return false和preventDefault: 在W3C Document Object Model Events Specification1.3版本中提到过: The Event

javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法

clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条. offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标. offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标. screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标. screenY 设置或获取鼠标指针位置相对于用户屏幕

event.srcElement与event.target的区别

window.event.srcElement与window.event.target 都是指向触发事件的元素,它是什么就有什么样的属性 srcElement是事件初始化目标html元素对象引用,因为事件通过元素层次冒泡,可以在任意一层进行处理, 有了元素的引用,就可以读写改元素的属性. IE浏览器支持window.event.srcElement , 而firefox支持window.event.target: event.srcElement从字面上可以看出来有以下关键字:事件,源 他的意思