一文看懂dart event loop 机制,全网解释最详细

我们首先我来看一张dart的程序启动执行顺序图

        从图中我们可以看见当一个dart程序被启动后首先会执行main方法然后会执行eventloop机制,evenloop机制会不停的检查microqueue队列和eventqueue队列,直到我们退出程序。

        那么什么是eventloop机制呢?当一个程序被启动后如果没有eventloop循环机制难道程序执行完了就直接退出程序吗?所以event loop 会保活我们的程序并且不停的监听新的任务,例如某一个按钮被点击了又或者是一个文本的输入操作再或者是一个请求等待。

       dart的 event loop机制会又两个任务队列及microtaskqueue和eventqueue队列。

 

1.eventqueue.包含所有外来的事件:I/O,mouse events,drawing events,timers,isolate之间的message等。

Future(() => print('future task'));
Future.delayed(Duration(seconds: 1), () {
  print('future task seconds 1');
});

2.microtaskqueue,这个队列我们在实战中很少用,也不推荐用,如果你往里面添加任务会影响dart的正常工作,因为dart程序自身的很多任务都是建立在eventqueue里的,如果你不小心阻塞了他会加班的。。。。

    Future.microtask(() =>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值