本发明专利技术提供了一种在线课堂系统中内存动态分配方法及设备,上述方法包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
【技术实现步骤摘要】
本专利技术属于内存分配方法领域,尤其涉及一种在线课堂系统中内存动态分配方法及设备。
技术介绍
现有的软件开发过程中,需要同时使用多线程来快速完成任务。为了避免多线程执行任务中造成的一块内存同时被进行读取和写入操作,需要在读写过程中设置阻塞。但当读写线程过多时,会导致阻塞等待时间过长,从而影响画面流畅感。现有的内存管理机制主要是根据统计到的内存的使用情况建立内存池,并将内存池划分为大小一致的内存块。在执行任务时,线程申请对应的内存空间,如果申请的空间大于实际所需要的,这会导致内存浪费;如果申请的内存太小,又会影响到线程的正常工作。因此需要内核对系统内存进行有效地管理,做到有效地申请合适大小的内存空间。
技术实现思路
本专利技术提供一种在线课堂系统中内存动态分配方法及设备,以解决上述问题。本专利技术提供一种在线课堂系统中内存动态分配方法。上述方法包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。本专利技术还提供一种在线课堂系统中内存动态分配设备,上述设备包括:主线程管理模块和内存队列管理模块,所述主线程管理模块和所述内存队列管理模块相连接;其中所述主线程管理模块包括多个子线程,所述内存队列管理模块包括多个内存块;所述主线程管理模块,用于创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;还用于将所述内存块放入内存队列管理模块中,并按照所述内存块的时间戳的先后顺序将内存队列管理模块中的所述内存块进行排序,其中,排在所述内存队列管理模块中第一位置的为队首,排在所述内存队列管理模块中最后位置的为队尾;还用于将所述内存队列管理模块中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将所述内存队列管理模块中的队首位置的所述内存块分配给执行写入操作的子线程;所述内存队列管理模块用于存放所述内存块。相较于先前技术,根据本专利技术提供的在线课堂系统中内存动态分配方法及设备,本专利技术采取动态分配的方法将内存资源分配给子线程,提高了数据存储和读取的速度。本专利技术采取动态分配的方法避免了因一次分配太少,子线程不能满足系统运行要求,同时避免了因一次分配过多,造成内存浪费,从而影响其它线程工作的问题。另外,本专利技术提供的方法能在保持通用内存管理的高效性和可靠性的同时,有效地降低、甚至解决了内存管理中存在的内存资源浪费的问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1所示为根据本专利技术的较佳实施例提供的在线课堂系统中内存动态分配方法的流程图;图2所示为根据本专利技术的较佳实施例提供的在线课堂系统中内存动态分配设备结构图。具体实施方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。如图1所示为根据本专利技术的较佳实施例提供的在线课堂系统中内存动态分配方法的流程图。如图1所示,本专利技术的较佳实施例提供的在线课堂系统中内存动态分配方法包括步骤101-104。步骤101:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述创建的内存块的大小相等。举例而言,主线程根据摄像头的分辨率来创建相应大小的内存块,具体创建的内存块的大小为摄像头一帧图像的大小,不同分辨率的摄像头的一帧图像的大小不同。如摄像头的分辨率为1920×1080,则内存块的大小为1920×1080×3。步骤102:所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述时间戳为所述执行写入操作的子线程在执行写入操作时记录在内存块中的。所述方法还包括:根据所述子线程执行写入操作的时间和所述子线程执行读取操作的时间的比值与预设值的关系对放入所述内存队列中的所述内存块的数目进行调整,具体为:若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,增加所述内存队列中所述内存块的数目;若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,减少所述内存队列中所述内存块的数目,其中第一预设值小于第二预设值。若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,在所述内存队列中增加第二预设数目的内存块。若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,在所述内存队列中减少第三预设数目的内存块。步骤103:所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;步骤104:所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。所述子线程在执行写入操作时,对正在接受写入的内存块设置阻塞。下面举例进行详细说明:主线程创建4个子线程,分别为子线程1、子线程2、子线程3、子线程4。主线程创建4个大小分别为1920×1080×3的内存块:内存块1、内存块2、内存块3、内存块4。主线程将内存块1、内存块2、内存块3、内存块4放入内存队列中。假设当前时刻各内存块的时间戳的具体如表1所示:表1内存块时间戳内存块111:00内存块210:00内存块314:00内存块413:00主线程按照内存块的时间戳的先后顺序将上述内存块进行排序,得到内存队列的顺序为:内存块2、内存块1、内存块4、内存块3,其中内存块2位于内存队列中第一位置(即队首),内存块3位于内存队列中最后位置(即队尾)。当主线程接收到新来的一帧(第11帧)需要写入的图像数据时,主线程分配子线程4执行该写入操作,并将内存块2作为子线程4的写入对象。子线程4接收到执行写入操作的指令后,对内存块2设置阻塞,将第11帧的图像数据写入内存块2,写入完毕后更新记录在内存块2中的时本文档来自技高网...

【技术保护点】
一种在线课堂系统中内存动态分配方法,其特征在于,包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
【技术特征摘要】
1.一种在线课堂系统中内存动态分配方法,其特征在于,包括以下步骤:
主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;
所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内
存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述
内存队列中最后位置的为队尾;
所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;
所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
2.根据权利要求1所述的方法,其特征在于,所述时间戳为所述执行写入操作的子线程
在执行写入操作时记录在内存块中的。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述子线程执行写
入操作的时间和所述子线程执行读取操作的时间的比值与预设值的关系对放入所述内存队列
中的所述内存块的数目进行调整,具体为:若存在所述子线程执行写入操作的时间与所述子
线程执行读取操作的时间的比值小于第一预设值时,增加所述内存队列中所述内存块的数目;
若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预
设值时,减少所述内存队列中所述内存块的数目,其中第一预设值小于第二预设值。
4.根据权利要求3所述的方法,其特征在于,若存在所述子线程执行写入操作的时间与
所述子线程执行读取操作...
【专利技术属性】
技术研发人员:沈玉将,董晓宏,
申请(专利权)人:苏州阔地网络科技有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。