在最佳实践应用并发设计章节,看到如下描述:ArkTS采用了内存隔离的线程模型,不同线程之间通过消息通信,线程内无锁化运行。对于不同业务,其内部的I/O操作会由系统分发到后台的I/O任务池,不阻塞ArkTS上层逻辑。异步I/O不阻塞ArkTS线程,同时TaskPool及I/O线程池由系统管理,提升能效。网络下载、文件访问等异步I/O操作系统会分发到I/O线程池。
请问网络请求、文件读写、关系型数据读写操作是否是由系统自动放到线程池执行并进行调度管理,不需要开发者手动使用taskpool去执行这些耗时操作。
网络请求:
let httpRequest = http.createHttp();
httpRequest.request()
文件读写:
1.fs.openSync(logFilePath, fs.OpenMode.READ\_WRITE | fs.OpenMode.CREATE | fs.OpenMode.APPEND)
2.fs.writeSync(logFile.fd, writeContent);
3.zlib.compressFile(inFile, outFile, options, (errData: BusinessError)
关系型数据库读写:
1.(store as relationalStore.RdbStore).insert(“LOG\_RECORD”, valueBucket)
2.(store as relationalStore.RdbStore).query(predicates, [‘RECORD\_TIME’, ‘CONTENT’])
3.resultSet.goToNextRow()
4.resultSet.getString(resultSet.getColumnIndex(‘CONTENT’))
5.(store as relationalStore.RdbStore).querySql(sqlStr)
目前的异步回调方法使用的是FRRT的能力,FRRT再回抛给event loop,并非自动加入到taskpool中,FRRT可以参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/\_f\_f\_r\_t-V5
当然如果想手动添加,也可以使用taskpool