问题标签 [event-driven]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
448 浏览

java - 我应该为这个 CPU 模拟应用程序使用 Java“工作线程”吗?

我正在用 Java/Swing 编写一台旧计算机的模拟器,我想我已经确定了我遇到的设计问题。尽管这个应用程序很奇特,但我怀疑有人会找到解决这个问题的“模式”。

我应该补充一点,我仍然是 OOP、GUI 和设计模式的初学者。

该机器有一个 GUI 线程 (Console) - 带有按钮和开关,以及一个模型线程 (CPU),控制台与模型线程 (CPU) 通信以使控制台事件改变 CPU 的状态。当然,控制台是来自 AWT 事件队列的事件驱动。控制台通过在 CPU 接收的优先阻塞队列上排队消息来与 CPU 通信。因此,CPU 也被构造为事件循环。到现在为止还挺好。

问题是,当您在控制台上按下 START 时,您希望 CPU 开始执行其内存中的任何程序。它仍然需要响应来自控制台的开关抛出和按钮推动(例如 STOP),但它主要需要坐在那里并通过其指令获取-解码-执行循环进行旋转。

甚至这在一段时间内也没有问题:我有一个名为Cycle()的方法,它将执行当前指令的一个特定“周期”,然后返回,立即重新调度以执行下一个周期。我将 Cycle() 的调用放在 CPU 的运行循环中,并在每个循环后轮询消息队列。如果 CPU 停止,运行循环将简单地等待消息队列。

现在:我正在执行 I/O 指令,例如读卡。其中一个周期有必要向相关外围设备发送数据请求(其本身实现为在单独线程上运行的 GUI/模型),然后等待数据到达。这完全打破了 CPU 是一个简单的事件循环的概念,它接收消息并对其进行操作,而不会导致进程阻塞。这个新的循环阻塞。如果操作员没有将卡片组加载到读卡器中,它可能会阻塞很长时间。

我曾考虑将指令 fetch-decode-execute 循环分解为一个单独的“工作”线程,但我认为这不太合适,因为工作线程(据我所知)旨在异步运行以完成,并且运行时不要继续与其父线程交互。(事实上​​,我想不出为什么“工作线程”应该终止。)此外,当一个循环需要访问由于控制台按键而可以同时修改的数据时,目前不需要同步。

那么,我如何设法将“事件驱动”处理与需要在继续之前显式等待消息的传统批处理相结合呢?

0 投票
2 回答
327 浏览

ruby-on-rails - Rails:如何在事件触发之前没有响应

我不知道 Rails 是否有以下方法:

  1. 接收请求
  2. 将请求放入监控列表,直到有事件触发
  3. 完成请求但不向客户端返回任何响应(没有 HTTP 响应),触发器将在处理后做响应。

我找到了一些关于delayed_job 的信息,但它立即返回响应并将作业置于似乎不是事件驱动的后台。

任何人都可以帮忙吗?

安迪。

0 投票
0 回答
195 浏览

rest - Javaspaces、Rest 和事件驱动架构

我想更多地了解 Javaspaces、REST 和事件驱动架构的融合。请问我在哪里可以找到有关所有技术的信息?

谢谢^_^

0 投票
1 回答
155 浏览

events - 在发布-订阅系统中处理事件的不同方式是什么?

在每个订阅者等待多种类型事件的发布-订阅系统中,有没有比简单切换更好的处理解决方案?

假设我们有 2 个发布者,Pub1 和 Pub2;Pub1 发送 2 种事件 Pub1-eventA 和 Pub1-eventB,Pub2 相同,分别为 Pub2-eventA 和 Pub2-eventB

另一方面,我们有一个订阅 Pub1 和 Pub2 事件的客户端 Sub1;

您将如何管理在 Sub1 侦听器中处理这些事件?

这里有一些可能性:

一个听众,一个大开关(难以维护):

一个监听器和一个关联图:

每个事件类型一个监听器:

0 投票
1 回答
5998 浏览

android - Android smoothScrollTo 不调用 onScrollStateChanged

我正在使用smoothScrollBy()滚动到ListView. 我希望在完成滚动以将其与用户用手指滚动时触发ListView的当前事件集成时收到通知。onScrollStateChanged()

目前,我正在使用Timer在平滑滚动持续时间后 100 毫秒运行的 a,但这不像我希望的那样由事件驱动。

0 投票
3 回答
128 浏览

expression-blend - Expression Blend VSM 与事件驱动

我最近使用了 Expression Blend,发现它有一个叫做 Visual State Manager 的东西,它和常规的事件驱动模型有什么区别,哪个更好?

0 投票
3 回答
748 浏览

c++ - 这会导致事件驱动编程中的竞争条件吗?

我正在离散模拟器中编写一个基于代理的小型交互模拟,并开始编写一些如下所示的代码。我之前没有一些事件驱动的编程,但并没有真正观察到这种情况。我想知道以下代码是否会在更新msgRcvd.

我的理解是,currentTime() + 5两个代理同时收到消息,因为这两个事件都在同一逻辑时间发生,所以我应该看到消息数为 2?或者我会看到一些奇怪的竞争条件发生并且值取决于调度程序(即它最终可能打印 1 或 2)?有什么建议么?

0 投票
2 回答
651 浏览

javascript - 浏览器端 node.js 还是非阻塞 javascript?

我对非阻塞架构很着迷。虽然我没有使用过 Node.js,但我在概念上已经掌握了它。此外,我一直在开发一个事件驱动的 Web 应用程序,因此我对事件编程有基本的了解。

您如何在浏览器中编写非阻塞 javascript?我想这在某些方面一定与 Node 的做法不同。例如,我的应用程序允许用户加载大量数据(序列化为 JSON)。解析此数据以重构应用程序状态。这是一项繁重的操作,可能会导致浏览器锁定一段时间。

我相信使用网络工作者是一种方式。(这似乎是显而易见的选择,然而,Node 实现了一个非阻塞的、事件驱动的架构,我相信不使用 Web Workers,所以我想肯定有另一种方式。)我相信计时器也可以发挥作用。我阅读了 TameJS 和其他一些扩展 javascript 语言的库。我对使用本机 javascript 而不引入新语言语法的 javascript 库感兴趣。

资源、图书馆和实际示例的链接非常受欢迎。

编辑:

了解了更多,我意识到我所说的属于“期货”一词。然而,jQuery 实现了这一点,它总是使用 XHR 调用服务器,服务器在返回结果之前进行处理,而我在做同样的事情而不调用服务器,客户端进行处理但在非阻塞方式。

http://www.erichynds.com/jquery/using-deferreds-in-jquery/

0 投票
0 回答
470 浏览

jquery - 任何基于事件的 jQuery 编程结构的例子?

我已经构建了一个程序,我认为它可以从使用 jQuery 的事件(bind() 和 trigger())而不是典型的函数调用编程结构的转变中受益。例如,而不是:

我可以写:

我正在学习如何有效地使用 bind() 和 trigger() ,但主要是在我进行过程中进行弥补。是否有任何关于如何使用 jQuery 遵循这种事件驱动风格来编程/构造代码的好例子?

0 投票
3 回答
2420 浏览

programming-languages - 基于事件 == 异步?

“基于事件”与“异步”相同吗?