复杂对象通信传递?Why?
我们继续接着上一个帖子,这一帖子主要说一下线程之间的通信,对象之间的传递也有一些要注意的地方。
复杂对象及自定义对象
MessageChannel 通信机制 主要特点是 所有对象不是引用传递,而是复制一份之后传递。
但是有五种对象是例外的,他们传输的是底层的引用,下面是这五种对象:
• Worker
• MessageChannel
• 可共享 ByteArray(其 shareable 属性设为 true 的 ByteArray 对象)
• Mutex
• Condition
复杂对象其实和发送普通消息是一样的,但是自定义的对象是一个例外,自定义的对象需要使用flash.net.registerClassAlias() 函数或 [RemoteClass] 元数据来注册类定义。无论使用哪种方法,都必须为类的两个 worker 版本使用相同的别名。
注意:因为很多对象传递的不是引用,所以子线程在复杂计算之后应该考虑删除对象的数据。
源码送上
下面放出第二个fla的源文件,主要是复杂对象和自定义对象的传递:
听我说一些废话吧
多线程很不错,真好,虽然Adobe的多线程有一些地方会坑人,但至少实现了不是吗。
免费是最昂贵的
银子还是要收的,因为
“免费的东西最昂贵” ,请深刻理解这句话的含义!!!
广告QQ(TKCB):2414268040(欢迎和我聊天交流,有朋自远方来不亦说乎)
QQ群:96759336(AS3殿堂之路,Flash Animate AS3 AIR 技术交流)
QQ群:705730359(H5天路历程,HTML5 CSS3 JaveScript 技术交流)
QQ群:463560360(King系列软件分享交流,TKCB 出品的 King 系列软件分享、使用、交流、反馈等)