Dart使用线程池处理IO请求。为了找出答案,我不得不克隆Dart SDK并查看源代码,因为我找不到文档的答案。
调用IO方法时,将调用File实现
_File类方法。它创建一个到本机代码的端口(
IOService_NewServicePort),并将IO请求ID和args发送到本机代码。本机代码通过线程池(
runtimevmnative_api_impl.cc#Dart_NewNativePort)处理IO请求,将任务提交到线程池中。然后,本机代码一直返回Dart代码,并
_File返回一个future对象。IO *** 作完成后,结果通过之前创建的端口从本地发送回Dart。这将触发在端口上注册的处理程序,并且将来会解决。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)