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



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

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

然而;如果使用绿色线程的进程调用阻塞系统调用,整个进程(所有绿色线程)将被阻塞(这将对性能造成可怕的影响)。为了解决这个问题,必须使用某种形式的异步系统调用;但是所有异步系统调用必须有某种方式通知进程异步操作的状态发生了变化(例如内核发送的通知说"你想异步读取的文件数据已被成功读取")。

换句话说,"事件"(内核通知异步操作的状态已经改变)对于实现一个性能良好的绿色线程运行时是很重要的。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新