dart:io 同步与异步文件操作

dart:io sync vs async file operations

files in dart:io有多个同步和异步操作:

在同步和异步选项之间进行选择时,我应该牢记哪些注意事项?我似乎记得在某个地方看到同步选项更快,如果您无论如何都必须等待它完成(例如 await file.delete())。但是我不记得我在哪里看到的,或者这是不是真的。

这种方法有什么区别吗:

Future deleteFile(File file) async {
  await file.delete();
  print('deleted');
}

和这个方法:

Future deleteFile(File file) async {
  file.deleteSync();
  print('deleted');
}

让我尝试根据对我的问题的评论总结一个答案。不对的地方指正。

  • 运行 async 方法中的代码不会在另一个线程上 运行。
  • Dart 是一个单线程系统。
  • 代码在事件循环中得到 运行。
  • 执行长 运行ning 同步任务将阻塞系统,无论它是否在异步方法中。
  • 隔离是一个线程。
  • 如果你想 运行 在另一个线程上执行任务,那么你需要 运行 在另一个线程上执行它。
  • 启动另一个隔离称为生成隔离。
  • 运行在另一个隔离区执行任务有几个选项,包括 compute and IsolateChannel and writing your own isolate communication code
  • 对于文件 IO,同步版本比异步版本更快。
  • 对于繁重的文件 IO,更喜欢异步版本,因为 .
  • 对于轻型文件 IO(如 file.exists()?),使用同步版本是一种选择,因为它可能很快。

进一步阅读