繁体   English   中英

事件驱动编程和绿色线程:它们的关系是什么?

[英]Event driven programming and Green thread: what is their relation?

我不清楚两者之间的关系是什么:说事件驱动编程是一种编程方法并且绿色线程以及事件库(如c中的libev)遵循这种方法是否正确?

事件驱动编程和绿色线程没有直接关系。

然而; 如果使用绿色线程的进程调用阻塞系统调用,则整个进程(其所有绿色线程)将被阻塞(这对性能来说将是可怕的)。 为了解决这个问题,必须使用某种形式的异步系统调用; 但所有异步系统调用都必须有某种方式通知进程异步操作的状态已更改(例如,kernel 发送的通知说“您要异步读取的文件数据已成功读取”)。

换句话说,“事件”(来自 kernel 的通知说异步操作的状态已经改变)最终对于实现良好的绿色线程运行时很重要。

当然,运行时的实现与使用该运行时的程序员实际看到的内容几乎没有关系。 例如,使用运行时的程序员可能会使用阻塞 IO 而不是使用任何事件或事件驱动编程(并且阻塞 IO 可以由运行时使用异步 ZCF3882F1C43AB22BFF0BD9D82D83251 和事件来模拟)。

以下是有关事件驱动编程和线程之间关系的一些信息。 什么是事件驱动编程?

我不知道为什么要在这方面挑出绿色线程,这只是线程如何实现的问题。 你是怎么回答你的问题的?

从字面上回答您的最后一个问题:不,绿色线程不遵循事件驱动的方法。

两者都设想使用循环,这就是我考虑类比的原因,如果我是正确的,两者都不应该使用操作系统调度程序来运行(除了在主线程上运行的事实)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM