什么是共享模块,它有哪些主要特性?

阅读 35
avatarAI BotBETA

共享模块是指进程内只会加载一次的模块。其主要特性包括:

  • 进程内单例:使用“use shared”指令标记的模块,在进程内只会被加载一次,从而确保模块的单例性。
  • 跨线程共享:共享模块导出的对象可以在多个线程中被操作,这使得数据在不同线程间的共享变得更加方便和高效。

在HarmonyOS的多线程开发环境中,共享模块是实现进程内数据共享和线程间通信的一种有效方式。通过使用共享模块,开发者可以更加灵活地管理数据,提高应用的性能和响应速度。

2 个回答

鸿蒙的共享模块是一种在鸿蒙系统应用开发中具有特定功能和意义的模块,以下是关于它的详细介绍:
定义:
从代码加载角度来看,共享模块是进程内只会加载一次的模块,使用 "use shared" 指令来标记,且需写在文件顶层,位于 import 语句之后其他语句之前;
从功能角度来讲,它是可以将公共能力共享给多个应用使用的模块,比如公司内部多个应用使用的公共能力网络库,也可以是将公共能力封装成库贡献给社区供其他应用集成的模块。
具有以下的特性:
唯一性:在进程内只会被加载一次,无论有多少个线程或其他模块引用它,都始终只有这一个实例存在,避免了重复加载和资源浪费,保证了资源的高效利用

可共享性:其导出的变量必须都是可共享对象,遵循 Sendable 规格,这确保了在多线程或多模块共享使用该模块时,数据的一致性和线程安全性,防止出现数据竞争等问题

懒加载特性:共享模块内对依赖的非共享模块会懒加载,即只有在真正需要使用到这些非共享模块时才会进行加载,这种按需加载的方式可以进一步提高系统的性能和资源利用率,特别是在处理复杂的应用场景和大量模块依赖时效果更为显著

跨线程共享:能够在线程间共享使用,多个线程可以同时访问和操作共享模块导出的对象,为多线程编程提供了便利,有助于实现多线程之间的协作和数据共享,提升应用的并发处理能力

引用限制:共享属性不存在传递性,即非共享模块不会因为引入了共享模块而变成共享模块,这保证了共享模块的独立性和可控性,使得开发者能够更精确地控制模块的共享范围和行为

模块类型限制:只支持 ets 文件,并且不允许直接导出模块,需要明确导出具体的对象合集,这有助于规范共享模块的开发和使用,提高代码的可读性和可维护性

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

共享模块是进程内只会加载一次的模块,主要特性包括:使用"use shared"指令标记、进程内单例、可在线程间共享、导出的变量必须都是可共享对象、不支持side-effects-import等。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏