diff --git a/UseSendable/README.md b/UseSendable/README.md index cf5ce732e8564abf7b17aeea434b13cc4a8196c7..9a31d57cb24e4adc921ed7fb3040e025aee67856 100644 --- a/UseSendable/README.md +++ b/UseSendable/README.md @@ -5,14 +5,12 @@ ## 效果预览 -不涉及。 +![home.png](screenshots/device/home.png) ## 工程目录 ``` -├──entry/src/main/cpp -│ ├──common -│ │ └──log_common.h +├──entry/src/main/cpp │ ├──types/libndkDrawing │ │ ├──Index.d.ts │ │ └──oh-package.json5 @@ -34,7 +32,7 @@ │ │ ├──Demo.ets │ │ ├──freezeObj.ts │ │ ├──InterThreadCommunication1.ets // 跨语言多线程通信(C++与ArkTS) -│ │ ├──InterThreadCommunication2.ets // 线程间模块共享(单例模式) +│ │ ├──InterThreadCommunication2.ets // 线程间模块共享(单例模式)(方案一) │ │ ├──InterThreadCommunication3.ets // 线程间模块共享(单例模式) │ │ └──InterThreadCommunication4.ets // 线程间不可变数据共享 │ └──workers @@ -43,7 +41,17 @@ ``` ## 使用说明 -不涉及。 +1. 点击“耗时任务并发执行场景”按钮,控制台打印“Return:3”。 +2. 点击“长时任务并发执行场景”按钮,控制台打印“execute success”。 +3. 点击“多任务关联执行(串行顺序依赖)”按钮,控制台打印“result is abc”。 +4. 点击“多任务关联执行(树状依赖)”按钮,控制台打印“taskpool:: execute task3 res: “100”、“taskpool:: execute task2 res: 200”、“taskpool:: execute task1 res: 300”。 +5. 点击“多任务同步等待结果(任务组)”按钮,控制台打印“res:”加上打印结果。 +6. 点击“多任务优先级调度”按钮,控制台打印“execColorInfo success”。 +7. 点击“任务延时调度”按钮,控制台打印“taskpool result: 100”。 +8. 点击“跨语言多线程通信(C++与ArkTS)”按钮,控制台打印“click nativeCall success”。 +9. 点击“线程间模块共享(单例模式) (方案一)”按钮,控制台打印“host thread address is”加上打印结果。 +10. 点击“线程间模块共享(单例模式)”按钮,控制台打印“executeTaskPool success”。 +11. 点击“线程间不可变数据共享”按钮,控制台打印“executeTaskPool success”。 ## 相关权限 不涉及。 diff --git a/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection1.ets b/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection1.ets index 891244d4f754da07aaa5bb6fa6d4c16daee05c06..2f3f825220ebc0a1775e72fa5464dfe5d353933b 100644 --- a/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection1.ets +++ b/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection1.ets @@ -23,7 +23,7 @@ import { taskpool } from '@kit.ArkTS'; // [StartExclude taskpool] const DOMAIN = 0x0000; -const TAG = 'ConcurrencyCapabilitySelection2'; +const TAG = 'ConcurrencyCapabilitySelection1'; const FORMAT = '%{public}s'; // [EndExclude taskpool] diff --git a/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection2.ets b/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection2.ets index 87125a77851bf4ec2ce6b57acd362e7af721d3b8..eb0e2533aad26520914326583bc271e21ac66285 100644 --- a/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection2.ets +++ b/UseSendable/entry/src/main/ets/pages/ConcurrencyCapabilitySelection2.ets @@ -39,11 +39,11 @@ function executeTaskPool() { let longTask: taskpool.LongTask = new taskpool.LongTask(foo); longTask.onReceiveData((msg: Object) => { // Listening callback - hilog.info(DOMAIN, TAG, FORMAT, `onReceiveData, ${JSON.stringify(msg)}`); + hilog.info(DOMAIN, TAG, FORMAT, `onReceiveData, ${msg}`); }); taskpool.execute(longTask).then(() => { - hilog.info(DOMAIN, TAG, FORMAT, 'execute'); + hilog.info(DOMAIN, TAG, FORMAT, 'execute success'); }).catch((err: BusinessError) => { hilog.error(DOMAIN, TAG, FORMAT, `taskpool execute error. Cause code: ${err.code},message: ${err.message}`); }); diff --git a/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement1.ets b/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement1.ets index 9dd099b619800d7db9a40473c21eb022e23cec43..e71c46a60d5614fe5bfd6cdced571289d56b9a55 100644 --- a/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement1.ets +++ b/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement1.ets @@ -67,7 +67,7 @@ async function seqRunner() { await runner.execute(task4).catch((err: BusinessError) => { hilog.error(DOMAIN, TAG, FORMAT, `taskpool execute error. Cause code: ${err.code},message: ${err.message}`); }); - hilog.info(DOMAIN, TAG, FORMAT, 'SequenceRunner: result is ' + result); + hilog.info(DOMAIN, TAG, FORMAT, 'SequenceRunner: result is :' + result); } // [End seq_runner] diff --git a/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement4.ets b/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement4.ets index cab001075ce198e0e05c369db6aa81451c0981c6..dae3c0f0f5a036bc3c14085e78d8c16257eaa579 100644 --- a/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement4.ets +++ b/UseSendable/entry/src/main/ets/pages/ConcurrentTaskManagement4.ets @@ -43,6 +43,7 @@ async function execColorInfo(bufferArray: ArrayBuffer): Promise { for (let i = 0; i < colorInfo?.length; i += PIXEL_STEP) { // data processing } + hilog.info(0x0000, 'ConcurrentTaskManagement4', '%{public}s', `execColorInfo success`); return newBufferArr; } // [End execcolorinfo] diff --git a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication1.ets b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication1.ets index e87eb91a8623a5571e614ff82d49e766df075bc2..8623fb241ce0c37cee363b9b055dc487c43a8856 100644 --- a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication1.ets +++ b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication1.ets @@ -35,6 +35,7 @@ export struct InterThreadCommunication1 { nativeModule.nativeCall((a: number) => { hilog.info(DOMAIN, TAG, FORMAT, 'Received data from thread-function: %{public}d', a); }) + hilog.info(DOMAIN, TAG, FORMAT, `click nativeCall success`); }) } // [StartExclude inter_thread_communication1] diff --git a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication3.ets b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication3.ets index 24caafa9fd6a7b50dd35aff61ba96264eff52887..f5bb48196dc19c980b64f48cb8ee2f0614dc7b64 100644 --- a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication3.ets +++ b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication3.ets @@ -30,12 +30,15 @@ const FORMAT = '%{public}s'; function initSingleton(): void { let demo = Demo.getInstance(); demo.init(); + hilog.info(0x0000, 'InterThreadCommunication3', '%{public}s', `initSingleton success`); // Notify the main thread that initialization is complete } async function executeTaskPool(): Promise { let task = new taskpool.Task(initSingleton); - await taskpool.execute(task).catch((err: BusinessError) => { + await taskpool.execute(task).then(() => { + hilog.info(0x0000, 'InterThreadCommunication3', '%{public}s', `executeTaskPool success`); + }).catch((err: BusinessError) => { hilog.error(DOMAIN, TAG, FORMAT, `taskpool execute error. Cause code: ${err.code},message: ${err.message}`); }); } diff --git a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication4.ets b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication4.ets index 7516e8772607c40f32cdab0291ec2d1b157c43e1..08a444a7bb04b5d68dacc6863457826b986f5d71 100644 --- a/UseSendable/entry/src/main/ets/pages/InterThreadCommunication4.ets +++ b/UseSendable/entry/src/main/ets/pages/InterThreadCommunication4.ets @@ -22,7 +22,7 @@ import { worker } from '@kit.ArkTS'; import { freezeObj } from './freezeObj'; // [StartExclude globalconfig] const DOMAIN = 0x0000; -const TAG = 'ConcurrencyCapabilitySelection2'; +const TAG = 'ConcurrencyCapabilitySelection4'; const FORMAT = '%{public}s'; // [EndExclude globalconfig] @Sendable @@ -40,6 +40,7 @@ function executeTaskPool() { globalConfig.init(); const workerInstance = new worker.ThreadWorker('entry/ets/workers/Worker.ets`', { name: 'Worker1' }); workerInstance.postMessage(globalConfig); + hilog.info(DOMAIN, TAG, FORMAT, `executeTaskPool success`); } catch (err) { hilog.error(DOMAIN, TAG, FORMAT, `postMessage failed. Cause code: ${err.code},message: ${err.message}`); } diff --git a/UseSendable/screenshots/device/home.png b/UseSendable/screenshots/device/home.png new file mode 100644 index 0000000000000000000000000000000000000000..b84aab890cff00fa0ea6511b73ba8a987325a576 Binary files /dev/null and b/UseSendable/screenshots/device/home.png differ