lookupFunction<T extends Function, F extends Function> 方法
查找原生函数并将其作为 Dart 函数返回。
T
是 C 函数签名,而 F
是 Dart 函数签名。
例如
int32_t add(int32_t a, int32_t b) {
return a + b;
}
DynamicLibrary dylib = DynamicLibrary.executable();
final add = dylib.lookupFunction<Int32 Function(Int32, Int32), int Function(int, int)>(
'add');
isLeaf
指定函数是否是叶函数。叶函数体积小,执行速度快,不允许调用 Dart 或使用任何 Dart VM API。叶函数在执行过程中绕过一些标准 Dart 到 Native 调用序列的较重部分,从而降低调用开销,使得叶调用比非叶调用更快。然而,这也意味着执行叶函数的线程不能与 Dart 运行时交互。长时间运行或阻塞的叶函数会延迟需要所有关联隔离组线程同步的操作,直到叶函数返回。例如,如果组中的一个隔离区正在尝试执行 GC,而第二个隔离区在叶调用中被阻塞,则第一个隔离区将必须暂停并等待此叶调用返回。
实现
external F lookupFunction<T extends Function, F extends Function>(
String symbolName,
{bool isLeaf = false});