标签:#事件 (计算机)

共 15 篇文章

Vert.x

Eclipse Vert.x 是一个事件驱动的应用程序框架,其支持多种编程语言,并运行于Java虚拟机中。 在其他编程语言中,与其类似的有Node.js(适用于JavaScript)、Twisted(适用于Python)、Perl Object Environment(适用于Perl)、libevent(适用于C)、reactPHP(适用于PHP)、amphp(适用于PHP)及EventMachine(适用于Ruby)。 自2.1.4版…

Libevent

libevent是一個异步事件處理軟體函式庫。libevent是一个提供异步事件通知的软件库。libevent提供了一組應用程序編程接口(API),libevent API提供的机制允许开发者为事件注册回调函式,例如文件描述符上的发生了特定事件或者等待特定事件超时,接收到信号的事件,常规的定时器超时事件。当事件發生時,libevent实例会执行回调函数。libevent 在设计上是用来替代很多事件驱动网络服务器自行实现的事件循环框架的。…

事件驅動程式設計

事件驅動程式設計()是一種電腦編程範型。這種模型的程式執行流程是由使用者的動作(如滑鼠的按鍵,鍵盤的按鍵動作)或者是由其他程式的訊息來決定的。相對於批次程式設計(batch programming)而言,程式執行的流程是由程式設計師來決定。批处理(batch)的程式設計在初級程式設計教學課程上是一種方式。然而,事件驅動程式設計這種設計模型是在互動程序(Interactive program)的情況下孕育而生的。 事件驅動程序可以由任何程…

事件 (计算)

事件在计算领域,是指系统设计用来监视的可检测到的发生或状态变化,例如用户输入、硬件中断、系统通知,或数据或条件的变化。当与事件处理程序关联时,事件会触发一个响应。处理程序可以同步运行,此时执行线程被阻塞直到事件处理程序完成其处理;也可以异步运行,此时事件可能稍后再处理。即使同步处理看似阻塞执行,许多系统的底层机制仍然是异步的,由事件循环管理。 事件可以通过多种机制实现,例如回调、消息对象、信号或中断,且事件本身与所用的实现机制是不同的。…

Microsoft Windows的訊息迴圈

微軟Windows操作系统是以事件驅動做為程式設計的基礎。程式的執行緒会从作業系統获取訊息。應用程式會不斷循环呼叫GetMessage函式(或是PeekMessage函式)來接收這些訊息,這個循环稱之為“事件迴圈”。基本上事件迴圈的程式碼如下所示(C語言 / C++程式語言): MSG msg; //用于存储一条消息 BOOL bRet; //从UI线程消息队列中取出一条消息 while( (bRet = GetMessage( &ms…

Select (Unix)

select是用于I/O多路转接的一个系统调用函数。 在C语言中,该系统调用在 sys/select.h 或 unistd.h 中声明,语法如下: int select(int nfds, fd_set readfds, fd_set writefds, fd_set errorfds, struct timeval timeout); 为了维护fd_set类型的参数,会使用下面四个宏:FD_SET(), FD_CLR(), FD_ZE…

輪詢

輪詢(Polling)是一種CPU決策如何提供週邊設備服務的方式,又稱「程式控制輸入输出」(Programmed I/O)。輪詢法的概念是:由CPU定時發出詢問,依序詢問每一個週邊設備是否需要其服務,有即給予服務,服務結束後再問下一個週邊,接著不斷週而復始。 輪詢法實作容易,但效率偏低。 Attente active

反应器模式

反应器模式()是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。 结构 Node.js Perl Object Environment Spring Framework(版本5之后) Twisted Vert.x。此外,因为请求处理器只会被同步调用,因此会限制反应器模式的最大并发数,特别是在对称多处理硬件。反应器模式的可扩展性,…

Kqueue

kqueue 是一种可扩展的事件通知接口。2000 年 7 月发布的 FreeBSD 4.1 中首次引入了 kqueue,随后也被 NetBSD、OpenBSD、macOS 等操作系统支持。 kqueue 在内核与用户空间之间充当输入输出事件的管线。因此在事件循环的迭代中,进行一次 kevent(2) 系统调用不仅可以接收未决事件,还可以修改事件过滤器。 另见 支持 kqueue 且与操作系统无关的库: libevent libuv 其…

Libev

libev是一个全功能和高性能的事件循环库,libev 参考并模仿了libevent和perl模块Event。它用于GNU虚拟专用以太网、rxvt-unicode、auditd、Deliantra MORPG服务器和客户端以及许多其他程序。node.js曾经嵌入了libev,现在更换为了libuv。 libev由Marc Lehmann和Emanuele Giaquinta创建,以GPLv2协议发布。 与libevent的区别 在设计理…

网络钩子

网页开发中的网络钩子(Web-{}-hook)是一种通过自定义回调函数来增加或更改網頁表现的方法。这些回调可被可能与原始网站或应用相关的第三方用户及开发者保存、修改与管理。术语“网络钩子”由杰夫·林德塞(Jeff Lindsay)于2007年通过给计算机编程术语“掛鉤}-”(Hook)加上前缀得来。 概览 网络钩子是“用户定义的HTTP回调”。网络钩子通常被某些事件激活,比如将代码推送到-{zh-hans:源; zh-hant:版本庫}…

离散事件仿真

离散事件模拟将系统随时间的变化抽象成一系列的离散时间点上的事件,通过按照事件时间顺序处理事件来演进,是一种事件驱动的仿真世界观。离散事件仿真将系统的变化看做一个事件,因此系统任何的变化都只能是通过处理相应的事件来实现,在两个相邻的事件之间,系统状态维持前一个事件发生后的状态不变。 同時估計法 同時估計法(Concurrent estimation)是离散事件仿真中使用的技術,用來估計離散事件動態系統下,不同參數設定的效果。例如觀察電腦模…

事件循环

在计算机领域中事件循环(),又称为消息分发器()、消息循环()、消息泵()或运行循环(),是一种程序构造或设计模式,负责等待并分发程序中的事件或消息。它的工作方式是向内部或者外部的“事件提供方”发出请求(请求通常会被阻塞,直到有新事件产生),待请求被处理后调用所获得的事件对应的回调函数(即“分发事件”)。 事件循环可以与反应器()结合使用,只要事件提供方采用可以被poll(指类似select、epoll的系统调用,不是指轮询)的文件接口…

阶段式服务器模型

SEDA(staged event-driven architecture),中文译为阶段事件驱动架构,也称为阶段式服务器模型。这是一类软件架构模型,它将复杂的、事件驱动的应用分解为一系列通过队列连接的阶段。该模型避免了基于线程的并发模型所带来的高负载问题,同时将事件与线程调度从应用逻辑中解耦。通过对每个队列实施准入控制,使服务得以状态良好地加载。当需求大于服务能力时,能够防止资源过度使用。 SEDA 通过动态控制,自动地对运行时参数进…

Libuv

libuv(Unicorn Velociraptor—独角伶盗龙)库是多平台C库,提供对基于事件循环的异步I/O的支持。它支持epoll(4)、kqueue(2)、Windows的IOCP和Solaris的事件端口。它主要设计用于Node.js,但也可用于其他软件项目,例如Lua的Luvit、Julia和Python的uvloop。它最初是libev或Microsoft IOCP上的抽象,libev只支持Unix系统而不支持Window…