external static Future<Isolate> spawn<T>(
void entryPoint(T message), T message,
{bool paused: false,
bool errorsAreFatal,
SendPort onExit,
SendPort onError,
@Since("2.3") String debugName});
源码说明翻译
1 创建并生成与当前 isolate
共享相同代码的 isolate
。
2 参数[entryPoint] 指定要在生成的 isolate
中调用的初始函数。
3 entry-point 函数在新的isolate中被调用,只有[Message]作为参数。
4 函数必须是顶级函数或静态方法,可以用一个参数来调用,即编译时常量函数值,
它至少接受一个位置参数,并且最多具有一个必需的位置参数。
函数可以接受任意数量的可选参数,只要它可以只用一个参数来调用。
函数不能是函数表达式的值,或者删除实例方法。
5 通常初始的[message]包含一个[SendPort(发送端口)],这样spawner和spawnee可以相互通信。
6 如果[paused]参数设置为“true”, isolate
将在暂停状态下启动,就在用[message]调用[entryPoint]函数之前,就像通过初始调用“ isolate.pause
(isolate.pausecapability)”一样。要resume entryPoint,请调用“ isolate.resume
(isolate.pausecapability)”。
7 如果提供了[errorsAreFatal]、[onExit]和/或[onError]参数,则isolate将分别使用相应的参数调用[setErrorsFatal]、[addOnExitListener]和[addErrorListener],并在 isolate
开始运行之前进行处理。
8 如果提供了[DebugName],则生成的[Isolate]将在Debugger和日志中通过此名称进行标识
9 如果省略了[errorsAreFatal],则平台可以选择默认行为或继承当前隔离的行为。
10 还可以对返回的isolate调用[setErrorsFatal]、[addOnExitListener]和[addErrorListener]方法,但除非隔离以[paused]形式启动,否则在这些方法完成之前,它可能已经终止。
11 返回一个future,如果生成成功,它将用一个[isolate]实例完成。否则它将以错误完成。
网友评论