一种在线课堂系统中内存动态分配方法及设备的制作方法

文档序号:6634559阅读:191来源:国知局
一种在线课堂系统中内存动态分配方法及设备的制作方法
【专利摘要】本发明提供了一种在线课堂系统中内存动态分配方法及设备,上述方法包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
【专利说明】一种在线课堂系统中内存动态分配方法及设备

【技术领域】
[0001] 本发明属于内存分配方法领域,尤其涉及一种在线课堂系统中内存动态分配方法 及设备。

【背景技术】
[0002] 现有的软件开发过程中,需要同时使用多线程来快速完成任务。为了避免多线程 执行任务中造成的一块内存同时被进行读取和写入操作,需要在读写过程中设置阻塞。但 当读写线程过多时,会导致阻塞等待时间过长,从而影响画面流畅感。
[0003] 现有的内存管理机制主要是根据统计到的内存的使用情况建立内存池,并将内存 池划分为大小一致的内存块。在执行任务时,线程申请对应的内存空间,如果申请的空间大 于实际所需要的,这会导致内存浪费;如果申请的内存太小,又会影响到线程的正常工作。 因此需要内核对系统内存进行有效地管理,做到有效地申请合适大小的内存空间。


【发明内容】

[0004] 本发明提供一种在线课堂系统中内存动态分配方法及设备,以解决上述问题。
[0005] 本发明提供一种在线课堂系统中内存动态分配方法。上述方法包括以下步骤:主 线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将 所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述 内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后 位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操 作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作 的子线程。
[0006] 本发明还提供一种在线课堂系统中内存动态分配设备,上述设备包括:主线程管 理模块和内存队列管理模块,所述主线程管理模块和所述内存队列管理模块相连接;其中 所述主线程管理模块包括多个子线程,所述内存队列管理模块包括多个内存块;所述主线 程管理模块,用于创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;还 用于将所述内存块放入内存队列管理模块中,并按照所述内存块的时间戳的先后顺序将内 存队列管理模块中的所述内存块进行排序,其中,排在所述内存队列管理模块中第一位置 的为队首,排在所述内存队列管理模块中最后位置的为队尾;还用于将所述内存队列管理 模块中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将所述内存队列管 理模块中的队首位置的所述内存块分配给执行写入操作的子线程;所述内存队列管理模块 用于存放所述内存块。
[0007] 相较于先前技术,根据本发明提供的在线课堂系统中内存动态分配方法及设备, 本发明采取动态分配的方法将内存资源分配给子线程,提高了数据存储和读取的速度。本 发明采取动态分配的方法避免了因一次分配太少,子线程不能满足系统运行要求,同时避 免了因一次分配过多,造成内存浪费,从而影响其它线程工作的问题。另外,本发明提供的 方法能在保持通用内存管理的高效性和可靠性的同时,有效地降低、甚至解决了内存管理 中存在的内存资源浪费的问题。

【专利附图】

【附图说明】
[0008] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0009] 图1所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配方法 的流程图;
[0010] 图2所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配设备 结构图。

【具体实施方式】
[0011] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的 情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0012] 如图1所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配方 法的流程图。如图1所示,本发明的较佳实施例提供的在线课堂系统中内存动态分配方法 包括步骤101-104。
[0013] 步骤101 :主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的 内存块;
[0014] 所述创建的内存块的大小相等。
[0015] 举例而言,主线程根据摄像头的分辨率来创建相应大小的内存块,具体创建的内 存块的大小为摄像头一帧图像的大小,不同分辨率的摄像头的一帧图像的大小不同。如摄 像头的分辨率为1920X 1080,则内存块的大小为1920X1080X3。
[0016] 步骤102 :所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间 戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置 的为队首,排在所述内存队列中最后位置的为队尾;
[0017] 所述时间戳为所述执行写入操作的子线程在执行写入操作时记录在内存块中的。
[0018] 所述方法还包括:根据所述子线程执行写入操作的时间和所述子线程执行读取操 作的时间的比值与预设值的关系对放入所述内存队列中的所述内存块的数目进行调整,具 体为:若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小 于第一预设值时,增加所述内存队列中所述内存块的数目;若存在所述子线程执行写入操 作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,减少所述内存队列 中所述内存块的数目,其中第一预设值小于第二预设值。
[0019] 若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比 值小于第一预设值时,在所述内存队列中增加第二预设数目的内存块。
[0020] 若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比 值大于第二预设值时,在所述内存队列中减少第三预设数目的内存块。
[0021] 步骤103 :所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读 取操作的子线程;
[0022] 步骤104 :所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写 入操作的子线程。
[0023] 所述子线程在执行写入操作时,对正在接受写入的内存块设置阻塞。
[0024] 下面举例进行详细说明:
[0025] 主线程创建4个子线程,分别为子线程1、子线程2、子线程3、子线程4。主线程创 建4个大小分别为1920X 1080X 3的内存块:内存块1、内存块2、内存块3、内存块4。主线 程将内存块1、内存块2、内存块3、内存块4放入内存队列中。假设当前时刻各内存块的时 间戳的具体如表1所示:
[0026] 表 1
[0027]

【权利要求】
1. 一种在线课堂系统中内存动态分配方法,其特征在于,包括w下步骤: 主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块; 所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将 内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所 述内存队列中最后位置的为队尾; 所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线 程; 所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线 程。
2. 根据权利要求1所述的方法,其特征在于,所述时间戳为所述执行写入操作的子线 程在执行写入操作时记录在内存块中的。
3. 根据权利要求1所述的方法,其特征在于,所述方法还包括;根据所述子线程执行写 入操作的时间和所述子线程执行读取操作的时间的比值与预设值的关系对放入所述内存 队列中的所述内存块的数目进行调整,具体为:若存在所述子线程执行写入操作的时间与 所述子线程执行读取操作的时间的比值小于第一预设值时,增加所述内存队列中所述内存 块的数目;若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比 值大于第二预设值时,减少所述内存队列中所述内存块的数目,其中第一预设值小于第二 预设值。
4. 根据权利要求3所述的方法,其特征在于,若存在所述子线程执行写入操作的时间 与所述子线程执行读取操作的时间的比值小于第一预设值时,在所述内存队列中增加第二 预设数目的内存块。
5. 根据权利要求3所述的方法,其特征在于,若存在所述子线程执行写入操作的时间 与所述子线程执行读取操作的时间的比值大于第二预设值时,在所述内存队列中减少第H 预设数目的内存块。
6. 根据权利要求1所述的方法,其特征在于,所述子线程在执行写入操作时,对正在接 受写入的内存块设置阻塞。
7. 根据权利要求1所述的方法,其特征在于,所述创建的内存块的大小相等。
8. -种在线课堂系统中内存动态分配设备,其特征在于,包括;主线程管理模块和内 存队列管理模块,所述主线程管理模块和所述内存队列管理模块相连接;其中所述主线程 管理模块包括多个子线程,所述内存队列管理模块包括多个内存块; 所述主线程管理模块,用于创建第一预设数目的子线程,并创建与所述子线程数目相 同的内存块;还用于将所述内存块放入内存队列管理模块中,并按照所述内存块的时间戳 的先后顺序将内存队列管理模块中的所述内存块进行排序,其中,排在所述内存队列管理 模块中第一位置的为队首,排在所述内存队列管理模块中最后位置的为队尾;还用于将所 述内存队列管理模块中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将 所述内存队列管理模块中的队首位置的所述内存块分配给执行写入操作的子线程; 所述内存队列管理模块用于存放所述内存块。
【文档编号】G06F12/02GK104461915SQ201410655171
【公开日】2015年3月25日 申请日期:2014年11月17日 优先权日:2014年11月17日
【发明者】沈玉将, 董晓宏 申请人:苏州阔地网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1