CN108345505B - 一种多线程资源管理方法和系统 - Google Patents

一种多线程资源管理方法和系统 Download PDF

Info

Publication number
CN108345505B
CN108345505B CN201810107774.2A CN201810107774A CN108345505B CN 108345505 B CN108345505 B CN 108345505B CN 201810107774 A CN201810107774 A CN 201810107774A CN 108345505 B CN108345505 B CN 108345505B
Authority
CN
China
Prior art keywords
resources
resource
loaded
large container
loading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810107774.2A
Other languages
English (en)
Other versions
CN108345505A (zh
Inventor
黄晓权
李金龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Xishanju Digital Technology Co ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Seasun Mobile Game Technology Co ltd
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Seasun Mobile Game Technology Co ltd, Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Zhuhai Seasun Mobile Game Technology Co ltd
Priority to CN201810107774.2A priority Critical patent/CN108345505B/zh
Publication of CN108345505A publication Critical patent/CN108345505A/zh
Application granted granted Critical
Publication of CN108345505B publication Critical patent/CN108345505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了的一种多线程资源管理方法的一个实施例的流程示意图,解决了目前加载大量资源时会出现卡顿现象,尤其是刚进入场景时的资源加载和运行过程中的资源加载的卡顿现象。本发明的方法包括以下步骤:在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;完成所有操作后,释放大容器。本发明公开了对应的一种多线程资源管理系统。

Description

一种多线程资源管理方法和系统
技术领域
本发明涉及一种多线程资源管理方法和系统,属于计算机系统领域。
背景技术
在3D游戏开发过程中,加载大量资源时会出现卡顿现象,其中刚进入场景时的资源加载和运行过程中的资源加载的卡顿尤为明显。为了提升资源加载效率,研发出了各种的优化方法,其中包括一种多线程资源管理方法,通过多线程机制,充分利用中央处理器多核的特点,并发管理资源的创建和加载,使游戏的执行效率大大地提升,给玩家带来了一种更流畅的操作体验。
发明内容
为了解决上述现有技术中存在的问题,本发明提供了一种多线程资源管理的实现方法。
根据本发明的第一方面,提供了一种多线程资源管理方法,包括以下步骤:
在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;
进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;
完成所有操作后,释放大容器。
优选地,创建一个用于装载资源的大容器包括:
在至少一个管理资源的类里面,创建一个大容器,创建多个线程,循环调度所述多个线程。
优选地,多线程并发加载资源放置到大容器中包括:
通过指定条件的过滤之后,得到需要加载资源的任务列表,把列表中的任务进行多线程加载,加载之前进行加锁,加载成功后解锁,放置于大容器中。
优选地,所述指定条件为相机剪裁。
优选地,所述列表中的任务通过哈希值与大容器对应。
优选地,对大容器内加载的资源进行增加、删除、查找或修改的操作包括:
通过外部程序对大容器中加载的资源进行增加、删除、查找或修改的操作,该操作过程前对大容器进行加锁,然后返回数据到外部程序中。
优选地,释放大容器包括:
当完成资源加载操作后,且没有新资源加载时,对容器进行清空操作,清空操作之前需要加锁,释放大容器中的资源以及大容器。
优选地,释放所述大容器的过程遍历整个大容器,利用并发机制释放大容器中的资源。
优选地,通过线程互斥锁进行加锁或解锁。
根据本发明的第二方面,还提供了一种多线程资源管理系统包括:处理器、储存器、
其中储存器连接至处理器,
其中处理器用于执行存储在存储器中的以下步骤:
在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;
进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;
完成所有操作后,释放大容器。
本发明的有益效果是:运用本方法能够方便地管理大量的资源,提高加载效率。同时,不需要等待一个资源加载完成后再加载下一个资源,减少了因程序等待导致的画面卡顿、方便程序管理资源、很大地提升了游戏画面和执行效率。通过多线程的机制,充分利用中央处理器多核的特点,并发管理资源的创建和加载,使游戏的执行效率大大地提升,给玩家带来了一种很流畅的体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将结合附图对本发明的实施例作进一步说明,其中:
图1为本发明中提供的一种多线程资源管理方法的一个实施例的流程示意图;
图2为本发明中提供的一种多线程资源管理方法的创建用于装载资源的大容器过程的一个实施例的流程示意图;
图3为本发明中提供的一种多线程资源管理方法的加载资源放置到大容器过程的一个实施例的流程示意图;
图4为本发明中提供的一种多线程资源管理方法的对资源大容器的操作过程的一个实施例的流程示意图;
图5为本发明中提供的一种多线程资源管理方法的释放这个大容器过程的一个实施例的流程示意图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。
本发明提供了一种多线程资源管理方法,解决了目前加载大量资源时会出现卡顿现象,尤其是刚进入场景时的资源加载和运行过程中的资源加载的卡顿现象。该线程资源管理方法分为创建一个用于装载资源的大容器、加载资源放置到大容器中、对资源大容器的增加、删除、查找、修改等等的操作、最后释放这个大容器的四个过程。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示出了本发明中提供的一种多线程资源管理方法的一个实施例的流程示意图,包括以下步骤:在资源加载前,创建一个用于装载资源的大容器,例如,该大容器为C++语言中的std::vector或者std::map等的大容器类型,用于管理将要加载的资源;进行资源加载时,多线程并发加载资源放置到大容器中,该并发加载是多个线程同时执行,能够提高程序整体的加载效率。其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;完成所有操作后,不再使用大容器且释放大容器。
图2示出了本发明中提供的一种多线程资源管理方法的创建用于装载资源的大容器过程的一个实施例的流程示意图,所述步骤S1具体包括:在至少一个管理资源的类(ResourceManager Class)里面,创建一个大容器,在加载资源前初始化清空所述大容器。该过程是为了方便管理创建的大量的资源,其中,处理资源的加载时可以利用多线程特性并发执行,提高了资源加载的速度。
图3示出了本发明中提供的一种多线程资源管理方法的加载资源放置到大容器过程的一个实施例的流程示意图,所述步骤S2具体包括:通过一定条件的过滤之后,比如相机的裁剪后,得到需要加载资源的任务列表,把列表中的任务进行多线程加载。相机裁剪是指在游戏中的物件包围盒被相机裁剪后得到需要加载的物件列表,然后多线程加载这个物件列表里的所有物件。加载之前利用Mutex线程互斥锁进行加锁,加载成功后利用Mutex线程互斥锁进行解锁,放置于大容器中。这些锁能保证在线程执行过程中,不会得到错误的结果,一个线程能等待另一个线程执行完才执行。其中,加载资源放置到大容器中过程是把资源当做一个任务,当线程执行到这的时候,进行加载,加载成功后就放置到大容器中。优选地,所述列表中的任务通过哈希值与大容器对应。哈希值是资源路径转换过后的哈希码,哈希码与大容器中的资源一一对应起来,做到无重复资源,方便资源管理类模块管理资源。
图4示出了本发明中提供的一种多线程资源管理方法的对资源大容器的操作过程的一个实施例的流程示意图,所述步骤S3具体包括:通过外部程序对大容器中加载的资源进行增加、删除、查找、修改操作,操作过程中对大容器利用Mutex线程互斥锁进行加锁,然后返回数据到外部程序中。通过加锁保证了返回到外部程序中的数据是正确的。在资源已加载完成的情况下,操作大容器中的资源,不影响主线程执行,提高整个程序执行效率。
图5示出了本发明中提供的一种多线程资源管理方法的释放这个大容器过程的一个实施例的流程示意图,所述步骤S4具体包括:当完成资源加载操作后,且没有新资源加载时,对大容器进行清空操作,清空之前需要利用Mutex线程互斥锁进行加锁,释放大容器中的资源以及大容器。通过清空前加锁保证了对大容器的正确操作,不会出现大容器清空完内部还有数据存在。优选地,释放所述大容器的过程遍历整个大容器,利用并发机制释放大容器中的资源,同时清空大容器。
本发明实施例还提供了一种多线程资源管理系统,包括:处理器、储存器,其中储存器连接至处理器,其中处理器用于执行存储在存储器中的以下步骤:在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;完成所有操作后,释放大容器。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种多线程资源管理方法,其特征在于,包括以下步骤:
在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;其中,创建一个用于装载资源的大容器包括,在至少一个管理资源的类里面,创建一个大容器,在加载资源前初始化清空所述大容器,在所述大容器中创建多个线程,循环调度所述多个线程;
进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;
其中,多线程并发加载资源放置到大容器中包括:通过指定条件的过滤之后,得到需要加载资源的任务列表,把列表中的任务进行多线程加载,加载之前进行加锁,加载成功后解锁,放置于大容器中;
其中,对大容器内加载的资源进行增加、删除、查找或修改的操作包括:在资源已加载完成的情况下,通过外部程序对大容器中加载的资源进行增加、删除、查找或修改的操作,该操作过程前对大容器进行加锁,然后返回数据到外部程序中;
完成所有操作后,释放所述大容器。
2.根据权利要求1所述的多线程资源管理方法,其特征在于,所述指定条件为相机剪裁。
3.根据权利要求1所述的多线程资源管理方法,其特征在于,所述列表中的任务通过哈希值与大容器对应。
4.根据权利要求1所述的多线程资源管理方法,其特征在于,释放大容器包括:
当完成资源加载操作后,且没有新资源加载时,对大容器进行清空操作,清空操作之前需要加锁,释放大容器中的资源以及大容器。
5.根据权利要求4所述的多线程资源管理方法,其特征在于,释放所述大容器的过程遍历整个大容器,利用并发机制释放大容器中的资源。
6.根据前述权利要求1和4中任一项所述的多线程资源管理方法,其特征在于,通过线程互斥锁进行加锁或解锁。
7.一种多线程资源管理系统,其特征在于,用于实现如权利要求1-6任一项所述的多线程资源管理方法,所述多线程资源管理系统包括:处理器、储存器、
其中储存器连接至处理器,
其中处理器用于执行存储在存储器中的以下步骤:
在资源加载前,创建一个用于装载资源的大容器,用于管理将要加载的资源;
进行资源加载时,多线程并发加载资源放置到大容器中,其中,资源加载成功后,对大容器内加载的资源进行增加、删除、查找或修改的操作;
完成所有操作后,释放所述大容器。
CN201810107774.2A 2018-02-02 2018-02-02 一种多线程资源管理方法和系统 Active CN108345505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810107774.2A CN108345505B (zh) 2018-02-02 2018-02-02 一种多线程资源管理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810107774.2A CN108345505B (zh) 2018-02-02 2018-02-02 一种多线程资源管理方法和系统

Publications (2)

Publication Number Publication Date
CN108345505A CN108345505A (zh) 2018-07-31
CN108345505B true CN108345505B (zh) 2022-08-30

Family

ID=62958938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810107774.2A Active CN108345505B (zh) 2018-02-02 2018-02-02 一种多线程资源管理方法和系统

Country Status (1)

Country Link
CN (1) CN108345505B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109603157B (zh) * 2018-12-19 2022-04-12 北京像素软件科技股份有限公司 任务管理方法及装置
CN112316419B (zh) * 2020-11-03 2022-06-28 腾讯科技(深圳)有限公司 应用程序的运行方法、装置、设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933648A (zh) * 2015-12-31 2017-07-07 中国电信股份有限公司 用于多租户容器资源管理的方法和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
CN102799456B (zh) * 2012-07-24 2015-11-25 上海晨思电子科技有限公司 一种游戏引擎加载资源文件的方法、装置和计算机
CN105413176A (zh) * 2015-11-10 2016-03-23 内蒙古工业大学 一种应用于游戏的3d引擎系统
CN105630556B (zh) * 2015-12-25 2019-02-19 北京像素软件科技股份有限公司 一种加载资源的方法和系统
CN105955766B (zh) * 2016-04-22 2019-08-30 北京小米移动软件有限公司 应用预加载方法及装置
CN106598525B (zh) * 2016-12-19 2019-09-17 广东威创视讯科技股份有限公司 一种拼接墙资源的预加载方法及装置
CN106775889B (zh) * 2016-12-28 2020-02-04 武汉斗鱼网络科技有限公司 利用对象池实现Flash播放器资源加载的方法及系统
CN107357650B (zh) * 2017-06-06 2020-12-15 武汉斗鱼网络科技有限公司 一种基于图片资源的内存自动释放方法及系统
CN107463663B (zh) * 2017-08-01 2020-04-28 浪潮云信息技术有限公司 一种轻量级多数据源访问方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933648A (zh) * 2015-12-31 2017-07-07 中国电信股份有限公司 用于多租户容器资源管理的方法和系统

Also Published As

Publication number Publication date
CN108345505A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
US10884822B2 (en) Deterministic parallelization through atomic task computation
US9218209B2 (en) Apparatus and method for parallel processing of a query
CN113535367A (zh) 任务调度方法及相关装置
CN110597606B (zh) 一种高速缓存友好的用户级线程调度方法
CN108345505B (zh) 一种多线程资源管理方法和系统
Sundell Wait-free multi-word compare-and-swap using greedy helping and grabbing
CN112948066A (zh) 一种基于异构资源的Spark任务调度方法
CN114296902A (zh) 一种处理延时任务的方法及装置
US20120210332A1 (en) Asynchronous programming execution
CN111857984A (zh) 银行系统中的作业调用处理方法、装置和计算机设备
US20240045787A1 (en) Code inspection method under weak memory ordering architecture and corresponding device
JP6468053B2 (ja) 情報処理装置、並列処理プログラム、及び、共有メモリアクセス方法
US9354890B1 (en) Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US10713085B2 (en) Asynchronous sequential processing execution
Troendle et al. A specialized concurrent queue for scheduling irregular workloads on GPUs
CN112346835A (zh) 一种基于协程的调度处理方法及系统
US8701099B2 (en) Accelerating generic loop iterators using speculative execution
US20130166887A1 (en) Data processing apparatus and data processing method
CN113806099B (zh) 一种基于二值计算的多核自旋锁设计方法
US20180173574A1 (en) Updating inference graph absent node locking
Dolev et al. Abort free semantictm by dependency aware scheduling of transactional instructions
US20180300184A1 (en) Wake-up ordering of processing streams using sequential identifiers
CN114546651A (zh) 一种多线程运行的方法、装置、设备及存储介质
Denizov Analyzing the Impact of Concurrency on Scaling Machine Learning Programs Using TensorFlow
CN117608775A (zh) 任务调度方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Patentee after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Patentee after: Zhuhai Xishanju Digital Technology Co.,Ltd.

Address before: 519000 building 3, Jinshan Software Park, 325 Qiandao Ring Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Patentee before: ZHUHAI SEASUN MOBILE GAME TECHNOLOGY Co.,Ltd.