diff --git a/zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md b/zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md index d77ce59b98ebf87a5144c67d66ff0e8d6b9af384..35f70d0f4ec6f937de4c79fb88d17d856c84dfe2 100644 --- a/zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md +++ b/zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md @@ -76,7 +76,7 @@ TaskPool支持开发者在主线程封装任务抛给任务队列,系统选择 - ArrayBuffer参数在TaskPool中默认转移,需要设置转移列表的话可通过接口[setTransferList()](../reference/apis/js-apis-taskpool.md#settransferlist10)设置。 -- 由于不同线程中上下文对象是不同的,因此TaskPool工作线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用。 +- 由于不同线程中上下文对象是不同的,因此TaskPool工作线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用,具体请见[多线程安全注意事项](#多线程安全注意事项)。 - 序列化传输的数据量大小限制为16MB。 @@ -91,7 +91,7 @@ TaskPool支持开发者在主线程封装任务抛给任务队列,系统选择 - 创建Worker不支持使用其他Module的Worker.ts文件,即不支持跨模块调用Worker。 -- 由于不同线程中上下文对象是不同的,因此Worker线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用。 +- 由于不同线程中上下文对象是不同的,因此Worker线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用,具体请见[多线程安全注意事项](#多线程安全注意事项)。 - 序列化传输的数据量大小限制为16MB。 @@ -165,3 +165,63 @@ const worker2 = new worker.ThreadWorker('../workers/worker.js'); - Worker存在数量限制,支持最多同时存在8个Worker。 - 在API version 8及之前的版本,当Worker数量超出限制时,会抛出“Too many workers, the number of workers exceeds the maximum.”错误。 - 从API version 9开始,当Worker数量超出限制时,会抛出“Worker initialization failure, the number of workers exceeds the maximum.”错误。 + +## 多线程安全注意事项 +多线程安全是指多个线程同时访问或修改共享资源时,能够保证程序的正确性和可靠性。 + +开发者选择TaskPool或Worker进行多线程开发时,在TaskPool和Worker的工作线程中导入的API和模块需要支持多线程安全,否则可能会导致多线程数据竞争问题,造成应用程序异常或崩溃。 + +在TaskPool或Worker的工作线程中支持使用以下模块,其他模块在使用时需要验证是否满足线程安全。 + + - console + - setInterval + - setTimeout + - clearInterval + - clearTimeout + - @ohos.buffer + - @ohos.convertxml + - @ohos.file + - @ohos.file.backup + - @ohos.file.cloudSync + - @ohos.file.cloudSyncManager + - @ohos.file.environment + - @ohos.file.fileAccess + - @ohos.file.fileExtensionInfo + - @ohos.file.fileuri + - @ohos.file.fs + - @ohos.file.hash + - @ohos.file.photoAccessHelper + - @ohos.file.picker + - @ohos.file.securityLabel + - @ohos.file.statvfs + - @ohos.file.storageStatistics + - @ohos.file.volumeManager + - @ohos.fileio + - @ohos.hilog + - @ohos.multimedia + - @ohos.multimedia.image + - @ohos.net + - @ohos.net.http + - @ohos.pasteboard + - @ohos.systemDateTime + - @ohos.systemTimer + - @ohos.taskpool + - @ohos.uri + - @ohos.url + - @ohos.util + - @ohos.util.ArrayList + - @ohos.util.Deque + - @ohos.util.HashMap + - @ohos.util.HashSet + - @ohos.util.LightWeightMap + - @ohos.util.LightWeightSet + - @ohos.util.LinkedList + - @ohos.util.List + - @ohos.util.PlainArray + - @ohos.util.Queue + - @ohos.util.Stack + - @ohos.util.TreeMap + - @ohos.util.TreeSet + - @ohos.util + - @ohos.worker + - @ohos.xml