CN109308218A - 一种多点同时绘制的匹配算法 - Google Patents
一种多点同时绘制的匹配算法 Download PDFInfo
- Publication number
- CN109308218A CN109308218A CN201810962156.6A CN201810962156A CN109308218A CN 109308218 A CN109308218 A CN 109308218A CN 201810962156 A CN201810962156 A CN 201810962156A CN 109308218 A CN109308218 A CN 109308218A
- Authority
- CN
- China
- Prior art keywords
- thread
- coordinate
- logarithm
- olddstlen
- newdstlen
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electrically Operated Instructional Devices (AREA)
Abstract
本发明公开了一种多点同时绘制的匹配算法,涉及算法绘制领域。本发明包括如下:S01:获取坐标对和对数;S02:判断当前对数newDstLen与上一次对数oldDstLen是否均为零;若是,则执行S08;若否,则执行S03;S03:判断当前对数newDstLen与上一次对数oldDstLen之间的大小;若当前对数newDstLen大于上一次对数oldDstLen,则执行S04;若当前对数newDstLen小于上一次对数oldDstLen,则执行S06;S04:根据坐标分配线程;S05:根据多余的线程数,关闭相应的线程;S06:根据线程分配坐标;S07:根据多余的坐标对数,开启相应的线程;S08:开始绘制。本发明通过轮训的方式将得到的坐标点匹配到相应的绘制线程,将每个绘制线程单独操作,使线程能够在绘制的时候打开,不绘制的时候关闭,减少了出错率,提高了绘制效率。
Description
技术领域
本发明属于绘制算法领域,特别是涉及一种多点同时绘制的匹配算法。
背景技术
为了节省绘制时间,市面上的绘制大多采用十点同时绘制,但计算机在绘制的过程中,不同点的绘制往往存在一定的影响,当计算机在绘制的过程中,出现个别的坐标点丢失计算机会导致出现交叉的情况,不仅影响到了绘制的正确性,还严重影响到了绘制的效率。
基于上诉问题,本发明在实现市面上十点同时绘制的同时,每个绘制点都有相应的绘制线程来单独操作,将坐标点轮训匹配到相应的绘制线程来提高绘制效率。
发明内容
本发明的目的在于提供一种多点同时绘制的匹配算法,通过轮训的方式将得到的坐标点匹配到相应的绘制线程,将每个绘制线程单独操作,使线程能够在绘制的时候打开,不绘制的时候关闭,解决了现有的绘制因某个坐标丢失造成的绘制断开、出错率高和效率低的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为一种多点同时绘制的匹配算法,包括如下步骤:
步骤S01获取坐标对和对数;
步骤S02判断当前对数newDstLen与上一次对数oldDstLen是否均为零;
若是,则执行步骤S08;
若否,则执行步骤S03;
步骤S03判断当前对数newDstLen与上一次对数oldDstLen之间的大小;
若当前对数newDstLen大于上一次对数oldDstLen,则执行步骤S04;
若当前对数newDstLen小于上一次对数oldDstLen,则执行步骤S06;
步骤S04根据坐标分配线程;
步骤S05根据多余的线程数,关闭相应的线程;
步骤S06根据线程分配坐标;
步骤S07根据多余的坐标对数,开启相应的线程;
步骤S08开始绘制。
优选地,所述步骤S05中,关闭线程采取延时缓冲关闭,具体延迟缓冲关闭流程如下:
步骤T01接收坐标点;
步骤T02线程匹配算法,开始绘制;
步骤T03根据线程缓冲时间判断信号是否为关闭信号;
若是,则关闭线程;
若否,信号为复活信号,则继续执行步骤T02。
优选地,所述步骤S03中,若当前对数newDstLen与上一次对数oldDstLen大小相等,即newPointCount与oldPointCount相等且newPointCount与oldPointCount均不为零,则线程和坐标直接进行匹配。
优选地,所述步骤S05中,坐标分配个线程之后,对多出的newPointCount-oldPointCount个数组对,开启对应的新线程直接绘制,并根据分配好的绘制线程之间开启新线程绘制剩下的坐标对;开启线程采用轮训的方式。
优选地,所述步骤S07中,线程分配给坐标后,多余的线程进行关闭处理或者加入到缓冲队列。
优选地,所述缓冲队列还包括等待复活的线程,当前开启的新线程数大于空闲线程数时,则将缓冲队列中最接近时间的线程提前关闭,重新开启绘制。
本发明通过轮训的方式将得到的坐标点匹配到相应的绘制线程,将每个绘制线程单独操作,使线程能够在绘制的时候打开,不绘制的时候关闭,减少了出错率,提高了绘制效率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一种多点同时绘制的匹配算法的步骤图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为一种多点同时绘制的匹配算法,包括如下步骤:
步骤S01获取坐标对和对数;首先分配好线程与坐标对之间的关系,确定坐标与线程之间的父子关系;距离最近的确定是当前线程的孩子,若某坐标与当前线程距离最合适但却不符合是当前线程孩子的条件,需要关闭当前线程,并且以这个坐标开启新的线程进行新的绘制线程;
步骤S02判断当前对数newDstLen与上一次对数oldDstLen是否均为零;
若是,则执行步骤S08;
若否,则执行步骤S03;
当前对数newDstLen与上一次对数oldDstLen均不为零时;前对数newDstLen与上一次对数oldDstLen主要分为以下五种关系,即:
一、newDstLen=0,oldDstLen!=0;
二、newDstLen!=0,oldDstLen=0;
三、newDstLen=!0,oldDstLen!=0,newDstLen=oldDstLen;
四、newDstLen=!0,oldDstLen!=0,newDstLen<oldDstLen;
五、newDstLen=!0,oldDstLen!=0,newDstLen>oldDstLen;
步骤S03判断当前对数newDstLen与上一次对数oldDstLen之间的大小;
若当前对数newDstLen大于上一次对数oldDstLen,则执行步骤S04;
若当前对数newDstLen小于上一次对数oldDstLen,则执行步骤S06;
步骤S04根据坐标分配线程;
步骤S05根据多余的线程数,关闭相应的线程;
步骤S06根据线程分配坐标;
步骤S07根据多余的坐标对数,开启相应的线程;
步骤S08开始绘制。
其中,步骤S05中,关闭线程采取延时缓冲关闭,具体延迟缓冲关闭流程如下:
步骤T01接收坐标点;
步骤T02线程匹配算法,开始绘制;
步骤T03根据线程缓冲时间判断信号是否为关闭信号;
若是,则关闭线程;
若否,信号为复活信号,则继续执行步骤T02。
将接收传过来的坐标点对和对数dstLen,根据上一次点的对数oldDstLen和当前点的对数newDstLen之间的关系控制线程的开关;每个线程的状态都有一个标识控制,线程之间互不干扰;
开启线程采取轮训的方式,因为有十个绘制线程,每次都从第一个开始查找不但查找的效率不高,而且会导致排在后面的绘制线程一直不会被调用;每次开启一个线程,他的下一个线程作为下一个开启的线程。总数对10取余,保证线程数组不会越界。
在线程需要关闭的地方设置缓冲,延迟关闭当前需要关闭的线程,当有一个线程关闭信号过来,当前需要关闭的线程进入缓冲队列delayClosingThread,设置一个时间判断是复活还是关闭。只要缓冲队列不为空,则新坐标点过来先进入缓冲队列进行判断,在合理的时间内,如果存在一个坐标点与某一个缓冲线程之间有直接的关系,则此坐标点作为缓冲线程的复活信号,当前线程移除缓冲队列继续执行绘制任务;在规定的时间内没有复活信号,则关闭从缓冲队列移除并将该线程的状态改为false。
其中,步骤S03中,若当前对数newDstLen与上一次对数oldDstLen大小相等,即newPointCount与oldPointCount相等且newPointCount与oldPointCount均不为零,则线程和坐标直接进行匹配,这里按照线程匹配坐标或者按照坐标匹配相应的线程都可以(按照那个方面数量少的匹配,这样不会出现不同的绘制线程或者不同的坐标匹配了同一个坐标或者线程);按第一种说法,首先给正在运行的第一个线程startThreadNum[i]分配相对于的坐标,坐标的x,y是按两个一维数组存储的,默认数组第一个就是合理的值,之后判断下一组坐标是否更加的合适,如果是则将坐标数组的两组坐标进行交换。直到所有的坐标数组都进行过判断。判断之后最合适的值仍需要进行判断,如果不合适,则立马关闭当前的绘制线程,同时开启一个新的绘制线程开始重新绘制。这样与第一个线程最合适的坐标就会被存在坐标数组的第一个位置;以此类推,所有的线程就与坐标数组一一对应了,然后直接分配即可。
其中,步骤S05中,坐标分配个线程之后,对多出的newPointCount-oldPointCount个数组对,开启对应的新线程直接绘制,并根据分配好的绘制线程之间开启新线程绘制剩下的坐标对;开启线程采用轮训的方式;匹配算法与newPointCount==oldPointCount一样,只是所有的绘制线程匹配好之后,在开启缺少的绘制线程。
其中,步骤S07中,线程分配给坐标后,多余的线程进行关闭处理或者加入到缓冲队列。
其中,缓冲队列还包括等待复活的线程,当前开启的新线程数大于空闲线程数时,则将缓冲队列中最接近时间的线程提前关闭,重新开启绘制;缓冲队列可以没有在等待复活的线程;缓冲队列中的线程是需要按照还能存在的时间长短有序排列的。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (6)
1.一种多点同时绘制的匹配算法,其特征在于,包括如下步骤:
步骤S01获取坐标对和对数;
步骤S02判断当前对数newDstLen与上一次对数oldDstLen是否均为零;
若是,则执行步骤S08;
若否,则执行步骤S03;
步骤S03判断当前对数newDstLen与上一次对数oldDstLen之间的大小;
若当前对数newDstLen大于上一次对数oldDstLen,则执行步骤S04;
若当前对数newDstLen小于上一次对数oldDstLen,则执行步骤S06;
步骤S04根据坐标分配线程;
步骤S05根据多余的线程数,关闭相应的线程;
步骤S06根据线程分配坐标;
步骤S07根据多余的坐标对数,开启相应的线程;
步骤S08开始绘制。
2.根据权利要求1所述的一种多点同时绘制的匹配算法,其特征在于,所述步骤S05中,关闭线程采取延时缓冲关闭,具体延迟缓冲关闭流程如下:
步骤T01接收坐标点;
步骤T02线程匹配算法,开始绘制;
步骤T03根据线程缓冲时间判断信号是否为关闭信号;
若是,则关闭线程;
若否,信号为复活信号,则继续执行步骤T02。
3.根据权利要求1所述的一种多点同时绘制的匹配算法,其特征在于,所述步骤S03中,若当前对数newDstLen与上一次对数oldDstLen大小相等,即newPointCount与oldPointCount相等且newPointCount与oldPointCo unt均不为零,则线程和坐标直接进行匹配。
4.根据权利要求1所述的一种多点同时绘制的匹配算法,其特征在于,所述步骤S05中,坐标分配个线程之后,对多出的newPointCount-oldPointCount个数组对,开启对应的新线程直接绘制,并根据分配好的绘制线程之间开启新线程绘制剩下的坐标对;开启线程采用轮训的方式。
5.根据权利要求1所述的一种多点同时绘制的匹配算法,其特征在于,所述步骤S07中,线程分配给坐标后,多余的线程进行关闭处理或者加入到缓冲队列。
6.根据权利要求5所述的一种多点同时绘制的匹配算法,其特征在于,所述缓冲队列还包括等待复活的线程,当前开启的新线程数大于空闲线程数时,则将缓冲队列中最接近时间的线程提前关闭,重新开启绘制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962156.6A CN109308218A (zh) | 2018-08-22 | 2018-08-22 | 一种多点同时绘制的匹配算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962156.6A CN109308218A (zh) | 2018-08-22 | 2018-08-22 | 一种多点同时绘制的匹配算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109308218A true CN109308218A (zh) | 2019-02-05 |
Family
ID=65223911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810962156.6A Pending CN109308218A (zh) | 2018-08-22 | 2018-08-22 | 一种多点同时绘制的匹配算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109308218A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681384B1 (en) * | 1999-12-23 | 2004-01-20 | International Business Machines Corporation | Multi-threaded break-point |
US20080155549A1 (en) * | 2006-12-20 | 2008-06-26 | Blinick Stephen L | Method and Apparatus for Adjusting Sleep Time of Fixed High-Priority Threads |
CN101620527A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 图形处理中管理活动线程依赖关系 |
CN101877116A (zh) * | 2008-11-20 | 2010-11-03 | 威盛电子股份有限公司 | 绘图处理单元、执行单元以及工作管理方法 |
CN102591721A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 一种分配线程执行任务的方法和系统 |
CN106557369A (zh) * | 2016-11-25 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种多线程的管理方法及系统 |
-
2018
- 2018-08-22 CN CN201810962156.6A patent/CN109308218A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681384B1 (en) * | 1999-12-23 | 2004-01-20 | International Business Machines Corporation | Multi-threaded break-point |
US20080155549A1 (en) * | 2006-12-20 | 2008-06-26 | Blinick Stephen L | Method and Apparatus for Adjusting Sleep Time of Fixed High-Priority Threads |
CN101620527A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 图形处理中管理活动线程依赖关系 |
CN101877116A (zh) * | 2008-11-20 | 2010-11-03 | 威盛电子股份有限公司 | 绘图处理单元、执行单元以及工作管理方法 |
CN102591721A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 一种分配线程执行任务的方法和系统 |
CN106557369A (zh) * | 2016-11-25 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种多线程的管理方法及系统 |
Non-Patent Citations (1)
Title |
---|
欧昌华等: "线程池在网络服务器程序中的应用", 《信息技术》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750132B (zh) | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 | |
CN105204938B (zh) | 一种内存访问的数据密集型进程调度方法 | |
US9830201B2 (en) | Low overhead contention-based switching between ticket lock and queued lock | |
CN105320570B (zh) | 资源管理方法和系统 | |
CN110018892A (zh) | 基于线程资源的任务处理方法及相关装置 | |
US8190857B2 (en) | Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor | |
CN104317770B (zh) | 用于众核处理系统的数据存储结构及数据访问方法 | |
CN103488717B (zh) | 一种无锁数据汇聚方法及装置 | |
CN105373434B (zh) | 资源管理系统及方法 | |
CN109194986A (zh) | 一种资源控制方法、智能电视及存储介质 | |
CN104503948B (zh) | 支持多核网络处理架构的紧耦合自适应协处理系统 | |
CN105389211A (zh) | 一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置 | |
CN104834505A (zh) | 一种多核多线程环境下numa感知的同步方法 | |
CN109522090A (zh) | 资源调度方法及装置 | |
CN106484519B (zh) | 异步线程重组方法及基于该方法的simt处理器 | |
CN105071973B (zh) | 一种报文接收方法及网络设备 | |
CN103399832B (zh) | 总线间的乱序返回数据的归序方法 | |
CN107203428A (zh) | 一种基于Xen的VCPU多核实时调度算法 | |
US20060206897A1 (en) | Efficient mechanism for preventing starvation in counting semaphores | |
CN108196939B (zh) | 用于云计算的虚拟机智能管理方法及装置 | |
CN106325995B (zh) | 一种gpu资源的分配方法及系统 | |
CN108304254B (zh) | 快速虚拟机进程调度控制方法及装置 | |
CN112181748A (zh) | 基于环形队列的并发测试方法、装置、设备及存储介质 | |
CN109308218A (zh) | 一种多点同时绘制的匹配算法 | |
CN111427686A (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 | ||
CB02 | Change of applicant information |
Address after: 230000 Yafu Park, Juchao Economic Development Zone, Chaohu City, Hefei City, Anhui Province Applicant after: ANHUI HUISHI JINTONG TECHNOLOGY Co.,Ltd. Address before: 230000 Room 102, 1st Floor, C District, Science Park, Hefei National University, 602 Huangshan Road, Hefei High-tech Zone, Anhui Province Applicant before: ANHUI HUISHI JINTONG TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information |