相关问题
ArkTS中如何实现对象的深拷贝?
325浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现PixelMap对象的深拷贝?
78浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过转移方式传递ArrayBuffer对象?
41浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中有效管理内存中的垃圾对象?
35浏览 • 1回复 待解决
如何在ArkTS中合并对象
1044浏览 • 1回复 待解决
#鸿蒙通关秘籍#在ArkTS中如何实现SharedArrayBuffer对象的跨线程共享?
43浏览 • 1回复 待解决
如何在ArkTS中合并对象?
1468浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在多个C++线程间共享ArkTS中Sendable对象?
56浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中实现模块化加载?
51浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用PixelMap深拷贝实现图片裁剪?
95浏览 • 1回复 待解决
HarmonyOS taskpool.SequenceRunner 拷贝传递 ArrayBuffer 出现异常
177浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中实现类的继承和方法重写?
139浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中利用Navigation实现对象传递?
81浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中实现多层嵌套类对象属性变化的监听?
96浏览 • 1回复 待解决
arkts 有实现 ArrayBuffer gzip 压缩的 api 吗
509浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中实现页面跳转时传递类对象?
124浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中获取Context对象?
41浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在网络请求中调整数据传输配置
93浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中定义和使用@Styles实现组件样式的复用?
176浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中通过ArkTS的Stack实现CSS绝对定位效果?
83浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙中如何实现普通对象的跨线程传递?
39浏览 • 1回复 待解决
ArkTS中HTTP请求如何以JSON形式进行传输
2784浏览 • 1回复 待解决
如何在Native侧释放ArkTS对象
2330浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在不同线程中操作鸿蒙共享模块中的对象?
103浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS的对象
2205浏览 • 1回复 待解决
ArrayBuffer对象在传递过程中可以通过深拷贝实现,这样在传递后每个线程都可以独立处理ArrayBuffer。默认情况下,ArkTS中的TaskPool传递ArrayBuffer数据时采用转移的方式,但可以通过调用
setTransferList([])
接口指定采用拷贝的方式。typescript // Index.ets import { taskpool } from '@kit.ArkTS'; import { BusinessError } from '@kit.BasicServicesKit';
@Concurrent function adjustImageValue(arrayBuffer: ArrayBuffer): ArrayBuffer { return arrayBuffer; }
function createImageTask(arrayBuffer: ArrayBuffer, isParamsByTransfer: boolean): taskpool.Task { let task: taskpool.Task = new taskpool.Task(adjustImageValue, arrayBuffer); if (!isParamsByTransfer) { task.setTransferList([]); } return task; }
@Entry @Component struct Index { @State message: string = 'Hello World';
build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: 'container', align: VerticalAlign.Center }, middle: { anchor: 'container', align: HorizontalAlign.Center } }) .onClick(() => { let taskNum = 4; let arrayBuffer = new ArrayBuffer(1024 * 1024); let taskPoolGroup = new taskpool.TaskGroup(); for (let i: number = 0; i < taskNum; i++) { let arrayBufferSlice: ArrayBuffer = arrayBuffer.slice(arrayBuffer.byteLength / taskNum * i, arrayBuffer.byteLength / taskNum * (i + 1)); taskPoolGroup.addTask(createImageTask(arrayBufferSlice, false)); } taskpool.execute(taskPoolGroup).then((data) => {}).catch((e: BusinessError) => { console.error(e.message); }) }) } .height('100%') .width('100%') } }