CN111913810B - 多线程场景下的任务执行方法、装置、设备和存储介质 - Google Patents

多线程场景下的任务执行方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN111913810B
CN111913810B CN202010740355.XA CN202010740355A CN111913810B CN 111913810 B CN111913810 B CN 111913810B CN 202010740355 A CN202010740355 A CN 202010740355A CN 111913810 B CN111913810 B CN 111913810B
Authority
CN
China
Prior art keywords
thread
resource
current value
preset variable
preset
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
CN202010740355.XA
Other languages
English (en)
Other versions
CN111913810A (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.)
Apollo Intelligent Technology Beijing Co Ltd
Original Assignee
Apollo Intelligent Technology Beijing 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 Apollo Intelligent Technology Beijing Co Ltd filed Critical Apollo Intelligent Technology Beijing Co Ltd
Priority to CN202010740355.XA priority Critical patent/CN111913810B/zh
Publication of CN111913810A publication Critical patent/CN111913810A/zh
Application granted granted Critical
Publication of CN111913810B publication Critical patent/CN111913810B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

本申请公开了一种多线程场景下的任务执行方法、装置、电子设备和存储介质,涉及自动驾驶、深度学习技术领域。具体实现方案为:在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作;确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,目标线程是指在当前线程之前执行了申请操作并且处于阻塞状态的其他线程;若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。本申请实施例采用先申请先使用互斥性资源的方式,实现了执行任务的各线程公平分配互斥性资源,并提升了任务的执行效率。

Description

多线程场景下的任务执行方法、装置、设备和存储介质
技术领域
本申请实施例涉及计算机技术,尤其涉及自动驾驶技术、深度学习技术,特别涉及一种多线程场景下的任务执行方法、装置、设备和存储介质。
背景技术
自动驾驶系统的多线程场景下,多个线程按照预设频率执行自身对应的任务,比如该任务可以包括调用执行预设模型。
多个线程执行任务时可能会使用到相同的资源,若该资源在同一时刻只能被一个线程使用,则该资源被称为互斥性资源。对于互斥性资源,需要采用锁机制来确保其在同一时刻只能由一个线程使用。其中,锁机制是指在当前线程申请使用互斥性资源时,若该互斥性资源未被加锁,则当前线程获得对该互斥性资源的使用权限,可以使用该互斥性资源执行对应任务,同时对该互斥性资源加锁,并在使用完该互斥性资源后对该互斥性资源解锁;若该互斥性资源已被其他线程加锁,则当前线程被阻塞,需要等待该互斥性资源被其他线程解锁。
若在互斥性资源处于加锁状态的过程中,有多个线程申请使用该互斥性资源,则在该互斥性资源被解锁后,通常是将该互斥性资源的使用权限随机分配给多个线程中的某个线程,该分配方法会导致潜在的饥饿问题,即某个线程总是能获得互斥性资源的使用权限,而其他线程等待较长时间都得不到互斥性资源的使用权限,有失公平性,会严重影响任务的执行效率,例如在自动驾驶系统中可能某些耗时短的模型得不到调度,会严重影响自动驾驶的效果。
发明内容
本申请实施例提供了一种多线程场景下的任务执行方法、装置、设备和存储介质,以达到为执行任务的各线程公平分配互斥性资源,以及提升任务的执行效率的目的。
根据第一方面,提供了一种多线程场景下的任务执行方法,由客户端执行,包括:
在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作;
确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,目标线程指在当前线程之前执行了申请操作并且处于阻塞状态的其他线程;
若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。
根据第二方面,提供了一种多线程场景下的任务执行装置,包括:
申请模块,用于在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作;
状态与线程确定模块,确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,目标线程指在当前线程之前执行了申请操作并且处于阻塞状态的其他线程;
线程执行模块,用于若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。
根据第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本申请任意实施例的多线程场景下的任务执行方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行本申请任意实施例的多线程场景下的任务执行方法。
根据本申请的技术,实现了执行任务的各线程公平分配互斥性资源,并提升了任务的执行效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的多线程场景下的任务执行方法的流程示意图;
图2是根据本申请第二实施例的多线程场景下的任务执行方法的流程示意图;
图3是根据本申请第三实施例的多线程场景下的任务执行方法的逻辑流程图;
图4是根据本申请第四实施例的多线程场景下的任务执行装置的结构示意图;
图5是用来实现本申请实施例的多线程场景下的任务执行方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请第一实施例的多线程场景下的任务执行的方法的流程示意图,本实施例可适用于在自动驾驶场景中,为各线程公平分配互斥性资源的情况。该方法可由一种多线程场景下的任务执行装置来执行,该装置采用软件和/或硬件的方式实现,优选是配置于电子设备。参见图1,多线程场景下的任务执行的方法具体如下:
S101、在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作。
由于在自动驾驶系统中存在着大量复杂、并行的计算任务,因此在自动驾驶场景中经常存在多线程并行执行计算任务情况。而由于车载计算机本身执行资源都有限,因此经常出现多个线程执行计算任务时,使用相同的执行资源。在当前线程执行预设任务(即某一计算任务)时,如果需要使用的执行资源是互斥性资源,则需要先执行对互斥性资源的使用权限的申请操作。其中,互斥性资源包括现场可编程门阵列FPGA资源,用于保证当前线程能够顺利执行预设任务,而预设任务包括调用执行预设深度学习模型。需要说明的是,通过调用执行预设深度学习模型,可以准确的完成模型预测,进而保证自动驾驶的精度。
S102、确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,目标线程是指在当前线程之前执行了申请操作并且处于阻塞状态的其他线程。
本申请实施例中,为了保证执行任务的各线程公平分配互斥性资源,采用了先申请先使用的原则,也即是各线程按照申请互斥性资源的先后顺序,依次使用该互斥性资源。由此,在通过S101执行对互斥性资源的使用权限的申请操作时,首先判断确定互斥性资源当前是否处于锁定状态,如果处于锁定状态,则表明当前线程没有使用该互斥性资源的权限;如果未处于锁定状态,还需判断在当前线程之前是否存在已经执行了申请操作并且处于阻塞状态的目标线程,如果存在,则表明目标线程要优先于当前线程来使用该互斥性资源,其中,阻塞状态是指目标线程处于等待状态。
S103、若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。
通过S102的判断,在互斥性资源未处于锁定状态并且不存在目标线程时,也即在互斥性资源当前可用,且在当前线程之前没有其它线程申请该互斥性资源的使用权限时,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。示例性的,当前线程申请互斥性资源使用权限时,如果某一线程正在使用互斥性资源执行预设任务,则当前线程进入阻塞状态。
在此需要说明的是,当前线程进入阻塞状态是指当前线程处于等待状态,并在当前线程每次等待预设时长后,返回执行确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程的操作。而通过控制当前线程处于阻塞状态,可以保证先申请互斥性资源的线程,能够优先使用该互斥性资源,以此达到公平分配互斥性资源的目的。
本申请实施例中,采用先申请先使用的原则为各线程分配互斥性资源,避免了某些线程等待较长时间都得不到互斥性资源的使用权限,由此达到公平分配互斥性资源的目的,同时可提升任务的执行效率。
图2是根据本申请第二实施例的多线程场景下的任务执行方法的流程示意图,本实施例是在上述实施例的基础上进行优化,如图2所示,该方法具体包括如下:
S201、在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作。
S202、获取第一预设变量的当前取值和第二预设变量的当前取值。
其中,第一预设变量的当前取值用于表征申请操作已被执行的总次数;第二预设变量的当前取值用于表征互斥性资源被各线程使用过的总次数。
S203、根据第一预设变量的当前取值和第二预设变量的当前取值,确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程。
其中,目标线程是指在所述当前线程之前执行了申请操作并且处于阻塞状态的其他线程。由于在第一预设变量的当前取值小于或等于第二预设变量的当前取值时,表明所有已申请互斥性资源使用权限的其它线程,已经利用互斥性资源执行完预设任务,也即表明互斥性资源当前处于未锁定状态,而且除了当前线程外,没有其他任何线程申请互斥性资源的使用权限。因此,在根据第一预设变量的当前取值和第二预设变量的当前取值,确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程时,若第一预设变量的当前取值小于或等于第二预设变量的当前取值,则确定互斥性资源当前未处于锁定状态并且当前不存在目标线程。
需要说明的是,通过比较第一预设变量的当前取值和第二预设变量的当前取值,即可快速的确定互斥性资源当前是否处于锁定状态、以及在当前线程之前是否已有其它线程申请了互斥性资源,进而保证后续先申请互斥性资源的线程能够优先访问。
S204、若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。
而在具体实现时,为了实现先申请先使用的原则,发明人创造性的通过使用原子操作设计了一种公平锁(FifoLock),在FifoLock类的内部维护了两个静态原子变量,即第二预设变量和第三预设变量,在FifoLock类的对象中维护了第一预设变量。各个线程通过在FifoLock类中创建对象的方式,获得公平锁,也即获得互斥性资源的使用权限,其中,FifoLock类在首个线程申请互斥性资源时进行加载,且第二预设变量和第三预设变量的初始取值均为0。
在当前线程执行对互斥性资源的使用权限的申请操作时,也即创建FifoLock类对象,从已加载FifoLock类中获取第二预设变量的当前取值和第三预设变量的当前取值,并将获取第三预设变量的当前取值赋值给第一预设变量,由此得到了第一预设变量的当前取值。同时,将第三预设变量的当前取值加1,实现了FifoLock类中第三预设变量的更新,保证后续线程获取第一预设变量值的准确性。进一步的,若第一预设变量的当前取值小于或者等于第二预设变量的当前取值,则表明当前线程拿到公平锁,也即当前线程获得了使用互斥性资源的权限,当前线程将互斥性资源设置为锁定状态,并利用互斥性资源执行预设任务。在当前线程执行完预设任务后,将互斥性资源设置为解锁状态,以便其它线程使用。在此需要说明的是,在每次使用完互斥性资源并将互斥性资源设置为解锁状态后,将第二预设变量的当前取值加1,以实现FifoLock类中第二预设变量的更新。
本申请实施例中,通过获取第一预设变量和第二预设变量的当前取值,即可快速判断互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程,进而当前线程根据判断结果使用互斥资源执行任务或进入阻塞状态,由此达到公平分配互斥性资源的目的,同时可提升任务的执行效率。
图3是本申请第三实施例提供的多线程场景下的任务执行方法的逻辑流程图,本实施例是在上述实施例的基础上进行优化,参见图3,逻辑流程具体如下:
当前线程执行对互斥性资源的使用权限的申请操作时,如果当前线程为首个申请互斥性资源的线程,则通过S301加载FifoLock类,此时执行S302可得到第二预设变量begin=0,第三预设变量end=0;如果当前线程不是首个申请互斥性资源的线程,由于前面线程申请资源时,已加载FifoLock类,因此只需从已加载的FifoLock类中的第二预设变量begin的当前取值和第三预设变量end的当前取值。
在按照S303创建FifoLock类的对象后,还需要通过步骤S304-S305判断当前线程是否获得互斥性资源的使用权限。具体的,由于FifoLock类的对象中维护有第一预设变量current_id,因此可通过S304将变量end的当前取值赋值给current_id,以作为current_id的当前取值,同时变量end的当前取值加1。
进一步的,通过S305判断current_id的当前取值是否小于或者等于begin的当前取值;若是,则由当前线获得程使用互斥性资源的权限,进而按照S307-S308执行预设任务,也即是调用执行预设深度学习模型,进行模型预测,并在预测完成后,按照S309析构对象,将互斥性资源的状态设置为未锁定状态,同时按照S310将begin的当前取值加1,并返回执行步骤S303,由其他线程继续创建对象,也即其它线程执行继续执行获取互斥性资源使用权限的操作;若否,则按照步骤S306,当前线程进入阻塞状态,也即是当前线程进入等待状态,并在等待预设时间(例如5ms)后,返回执行S305,以判断current_id的当前取值是否小于或者等于begin的当前取值的操作。
示例性的,在时刻t1,线程1执行对互斥性资源的使用权限的申请操作,即创建FifoLock类的对象,其中,线程1是首个申请互斥性资源的使用权限的线程,此时begin=0,end=0,将end赋值给current_id后,current_id的取值为0,将end加1变为1,此时current_id=begin=0,因此会拿到锁,即具有互斥性资源的使用权限,执行模型预测任务,在时刻t2预测完成时,将begin加1变为1;
若在时刻t1到时刻t2之间的时刻t3,线程2执行对互斥性资源的使用权限的申请操作,即创建FifoLock类的对象,则将end的当前取值1赋值给current_id,即current_id的取值为1,end加1变为2。此时current_id=1>begin=0,因此会休眠5ms。5ms后,若线程1执行完成即begin变为1,则线程2拿到锁,执行模型预测任务,预测完成后begin加1变为2;5ms后,若线程1还未执行完成,则继续休眠。
同样的,若在时刻t1到时刻t2之间的时刻t4(t4晚于t3),线程3执行对互斥性资源的使用权限的申请操作,即创建FifoLock类的对象,current_id的取值为2,end加1变为3,此时current_id=2>begin=0,因此会休眠5ms,5ms后若线程1执行完成即begin变为1,由于current_id=2>begin=1,线程3仍然拿不到锁,而是会由提前申请的线程2拿到锁。
因此,在资源被加锁的期间,若有多个线程先后申请该资源,则在资源被解锁后谁先申请谁先获得锁,由此实现了互斥性资源的公平分配,由于避免了某些线程等待较长时间都得不到互斥性资源的使用权限,提升了任务的执行效率。
图4是根据本申请第四实施例的多线程场景下的任务执行装置的结构示意图,本实施例可适用于在自动驾驶场景中,为各线程公平分配互斥性资源的情况。如图4所示,该装置400具体包括:
申请模块401,用于在当前线程需要使用互斥性资源时,执行对互斥性资源的使用权限的申请操作;
状态与线程确定模块402,确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,目标线程指在当前线程之前执行了申请操作并且处于阻塞状态的其他线程;
线程执行模块403,用于若互斥性资源未处于锁定状态并且不存在目标线程,则当前线程使用互斥性资源以执行预设任务,否则,当前线程进入阻塞状态。
在上述实施例的基础上,可选的,状态与线程确定模块包括:
变量获取单元,用于获取第一预设变量的当前取值和第二预设变量的当前取值,其中第一预设变量的当前取值用于表征申请操作被执行的总次数;第二预设变量的当前取值用于表征互斥性资源被各线程使用过的总次数;
状态与线程确定单元,用于根据第一预设变量的当前取值和第二预设变量的当前取值,确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程。
在上述实施例的基础上,可选的,装置还包括:
赋值模块,用于在获取第一预设变量的当前取值和第二预设变量的当前取值之前,获取第三预设变量的当前取值,将第三预设变量的当前取值赋值给第一预设变量,并将第三预设变量的当前取值加1;
其中,第二预设变量和第三预设变量的初始取值均为0,并且在每次使用完互斥性资源并将互斥性资源设置为解锁状态后,将第二预设变量的当前取值加1。
在上述实施例的基础上,可选的,状态与线程确定单元具体用于:
若第一预设变量的当前取值小于或等于第二预设变量的当前取值,则确定互斥性资源当前未处于锁定状态并且当前不存在目标线程。
在上述实施例的基础上,可选的,线程执行模块包括:
等待执行单元,用于当前线程等待预设时长后,返回执行确定互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程的操作。
在上述实施例的基础上,可选的,互斥性资源包括现场可编程门阵列FPGA资源。
在上述实施例的基础上,可选的,预设任务包括:调用执行预设深度学习模型。
本申请实施例提供的多线程场景下的任务执行装置400可执行本申请任意实施例提供的多线程场景下的任务执行方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本申请任意方法实施例中的描述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图5所示,是根据本申请实施例的多线程场景下的任务执行方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的多线程场景下的任务执行方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的多线程场景下的任务执行方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的多线程场景下的任务执行方法对应的程序指令/模块(例如,附图4所示的申请模块401、状态与线程确定模块402、线程执行模块403)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的多线程场景下的任务执行方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据实现本申请实施例的多线程场景下的任务执行方法的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至实现本申请实施例的多线程场景下的任务执行方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现本申请实施例的多线程场景下的任务执行方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与实现本申请实施例的多线程场景下的任务执行方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
根据本申请实施例的技术方案,实现了执行任务的各线程公平分配互斥性资源,并提升了任务的执行效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (14)

1.一种多线程场景下的任务执行方法,所述方法包括:
在当前线程需要使用互斥性资源时,执行对所述互斥性资源的使用权限的申请操作;
确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,所述目标线程是指在所述当前线程之前执行了所述申请操作并且处于阻塞状态的其他线程;
若所述互斥性资源未处于锁定状态并且不存在所述目标线程,则所述当前线程使用所述互斥性资源以执行预设任务,否则,所述当前线程进入阻塞状态;
其中,确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程,包括:
获取第一预设变量的当前取值和第二预设变量的当前取值,其中所述第一预设变量的当前取值用于表征所述申请操作被执行的总次数;所述第二预设变量的当前取值用于表征所述互斥性资源被各线程使用过的总次数;
根据所述第一预设变量的当前取值和所述第二预设变量的当前取值,确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程。
2.根据权利要求1所述的方法,其中,在获取第一预设变量的当前取值和第二预设变量的当前取值之前,所述方法还包括:
获取第三预设变量的当前取值,将所述第三预设变量的当前取值赋值给所述第一预设变量,并将所述第三预设变量的当前取值加1;
其中,所述第二预设变量和所述第三预设变量的初始取值均为0,并且在每次使用完所述互斥性资源并将所述互斥性资源设置为解锁状态后,将所述第二预设变量的当前取值加1。
3.根据权利要求1所述的方法,其中,根据所述第一预设变量的当前取值和所述第二预设变量的当前取值,确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程,包括:
若所述第一预设变量的当前取值小于或等于所述第二预设变量的当前取值,则确定所述互斥性资源当前未处于锁定状态并且当前不存在目标线程。
4.根据权利要求1所述的方法,其中,所述当前线程进入阻塞状态,包括:
所述当前线程等待预设时长后,返回执行确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程的操作。
5.根据权利要求1-4中任一项所述的方法,其中,所述互斥性资源包括现场可编程门阵列FPGA资源。
6.根据权利要求1-4中任一项所述的方法,所述预设任务包括:调用执行预设深度学习模型。
7.一种多线程场景下的任务执行装置,所述装置包括:
申请模块,用于在当前线程需要使用互斥性资源时,执行对所述互斥性资源的使用权限的申请操作;
状态与线程确定模块,确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程;其中,所述目标线程是指在所述当前线程之前执行了所述申请操作并且处于阻塞状态的其他线程;
线程执行模块,用于若所述互斥性资源未处于锁定状态并且不存在所述目标线程,则所述当前线程使用所述互斥性资源以执行预设任务,否则,所述当前线程进入阻塞状态;
其中,状态与线程确定模块包括:
变量获取单元,用于获取第一预设变量的当前取值和第二预设变量的当前取值,其中所述第一预设变量的当前取值用于表征所述申请操作被执行的总次数;所述第二预设变量的当前取值用于表征所述互斥性资源被各线程使用过的总次数;
状态与线程确定单元,用于根据所述第一预设变量的当前取值和所述第二预设变量的当前取值,确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程。
8.根据权利要求7所述的装置,其中,所述装置还包括:
赋值模块,用于在获取第一预设变量的当前取值和第二预设变量的当前取值之前,获取第三预设变量的当前取值,将所述第三预设变量的当前取值赋值给所述第一预设变量,并将所述第三预设变量的当前取值加1;
其中,所述第二预设变量和所述第三预设变量的初始取值均为0,并且在每次使用完所述互斥性资源并将所述互斥性资源设置为解锁状态后,将所述第二预设变量的当前取值加1。
9.根据权利要求7所述的装置,其中,状态与线程确定单元具体用于:
若所述第一预设变量的当前取值小于或等于所述第二预设变量的当前取值,则确定所述互斥性资源当前未处于锁定状态并且当前不存在目标线程。
10.根据权利要求7所述的装置,其中,线程执行模块包括:
等待执行单元,用于所述当前线程等待预设时长后,返回执行确定所述互斥性资源当前是否处于锁定状态、以及当前是否存在目标线程的操作。
11.根据权利要求7-10中任一项所述的装置,其中,所述互斥性资源包括现场可编程门阵列FPGA资源。
12.根据权利要求7-10中任一项所述的装置,其中,所述预设任务包括:调用执行预设深度学习模型。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的多线程场景下的任务执行方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的多线程场景下的任务执行方法。
CN202010740355.XA 2020-07-28 2020-07-28 多线程场景下的任务执行方法、装置、设备和存储介质 Active CN111913810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010740355.XA CN111913810B (zh) 2020-07-28 2020-07-28 多线程场景下的任务执行方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010740355.XA CN111913810B (zh) 2020-07-28 2020-07-28 多线程场景下的任务执行方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN111913810A CN111913810A (zh) 2020-11-10
CN111913810B true CN111913810B (zh) 2024-03-19

Family

ID=73286806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010740355.XA Active CN111913810B (zh) 2020-07-28 2020-07-28 多线程场景下的任务执行方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN111913810B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543343B (zh) * 2022-11-28 2023-04-07 北京大学 变量跨线程操作方法及装置

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601477A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 用于自主自适应互斥体的方法和系统
CN101095113A (zh) * 2004-12-29 2007-12-26 英特尔公司 多处理器环境中基于事务的共享数据操作
CN102999378A (zh) * 2012-12-03 2013-03-27 中国科学院软件研究所 一种读写锁实现方法
CN103870330A (zh) * 2014-03-03 2014-06-18 大唐移动通信设备有限公司 一种基于dsp的任务调度方法和装置
CN104572568A (zh) * 2013-10-15 2015-04-29 阿里巴巴集团控股有限公司 读锁操作方法、写锁操作方法及系统
CN105824709A (zh) * 2016-03-11 2016-08-03 浙江大华技术股份有限公司 一种临界区访问方法及装置
US9471400B1 (en) * 2015-07-28 2016-10-18 International Business Machines Corporation Reentrant read-write lock algorithm
CN106716348A (zh) * 2014-09-08 2017-05-24 Arm 有限公司 用于执行多个线程的数据处理设备中的共享资源
CN107807858A (zh) * 2017-10-30 2018-03-16 北京神州绿盟信息安全科技股份有限公司 一种读写锁操作方法及系统、设备
CN107818018A (zh) * 2016-09-14 2018-03-20 北京京东尚科信息技术有限公司 分布式锁的控制方法和装置
CN108052396A (zh) * 2017-11-27 2018-05-18 深圳市恒扬数据股份有限公司 一种资源分配方法及系统
CN109213523A (zh) * 2017-07-01 2019-01-15 英特尔公司 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统
CN109271258A (zh) * 2018-08-28 2019-01-25 百度在线网络技术(北京)有限公司 读写锁重入的实现方法、装置、终端及存储介质
CN109597692A (zh) * 2018-12-05 2019-04-09 郑州云海信息技术有限公司 一种互斥锁管理方法、系统及电子设备和存储介质
CN110430258A (zh) * 2019-08-01 2019-11-08 哈尔滨哈工大大数据通用技术有限公司 一种分布式锁管理方法和装置
CN111444002A (zh) * 2020-03-25 2020-07-24 深圳前海微众银行股份有限公司 一种任务调度方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343338B1 (en) * 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
US20100211948A1 (en) * 2009-02-16 2010-08-19 Sun Microsystems, Inc. Method and system for allocating a resource to an execution entity

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601477A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 用于自主自适应互斥体的方法和系统
CN101095113A (zh) * 2004-12-29 2007-12-26 英特尔公司 多处理器环境中基于事务的共享数据操作
CN102999378A (zh) * 2012-12-03 2013-03-27 中国科学院软件研究所 一种读写锁实现方法
CN104572568A (zh) * 2013-10-15 2015-04-29 阿里巴巴集团控股有限公司 读锁操作方法、写锁操作方法及系统
CN103870330A (zh) * 2014-03-03 2014-06-18 大唐移动通信设备有限公司 一种基于dsp的任务调度方法和装置
CN106716348A (zh) * 2014-09-08 2017-05-24 Arm 有限公司 用于执行多个线程的数据处理设备中的共享资源
US9471400B1 (en) * 2015-07-28 2016-10-18 International Business Machines Corporation Reentrant read-write lock algorithm
CN105824709A (zh) * 2016-03-11 2016-08-03 浙江大华技术股份有限公司 一种临界区访问方法及装置
CN107818018A (zh) * 2016-09-14 2018-03-20 北京京东尚科信息技术有限公司 分布式锁的控制方法和装置
CN109213523A (zh) * 2017-07-01 2019-01-15 英特尔公司 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统
CN107807858A (zh) * 2017-10-30 2018-03-16 北京神州绿盟信息安全科技股份有限公司 一种读写锁操作方法及系统、设备
CN108052396A (zh) * 2017-11-27 2018-05-18 深圳市恒扬数据股份有限公司 一种资源分配方法及系统
CN109271258A (zh) * 2018-08-28 2019-01-25 百度在线网络技术(北京)有限公司 读写锁重入的实现方法、装置、终端及存储介质
CN109597692A (zh) * 2018-12-05 2019-04-09 郑州云海信息技术有限公司 一种互斥锁管理方法、系统及电子设备和存储介质
CN110430258A (zh) * 2019-08-01 2019-11-08 哈尔滨哈工大大数据通用技术有限公司 一种分布式锁管理方法和装置
CN111444002A (zh) * 2020-03-25 2020-07-24 深圳前海微众银行股份有限公司 一种任务调度方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Java语言中非阻塞算法的实现;朱;;电脑知识与技术(第20期);第225-225页 *

Also Published As

Publication number Publication date
CN111913810A (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
CN111913809B (zh) 多线程场景下的任务执行方法、装置、设备和存储介质
US20210208951A1 (en) Method and apparatus for sharing gpu, electronic device and readable storage medium
CN110806923B (zh) 一种区块链任务的并行处理方法、装置、电子设备和介质
CN111597028B (zh) 用于任务调度的方法和装置
CN111475262B (zh) 区块链中事务请求处理方法、装置、设备和介质
CN111400000B (zh) 网络请求处理方法、装置、设备和存储介质
US20210191780A1 (en) Method and apparatus for processing development machine operation task, device and storage medium
CN111782669B (zh) 一种分布式锁的实现方法、装置及电子设备
CN112527474B (zh) 任务处理方法及装置、设备、可读介质、计算机程序产品
US20210248469A1 (en) Method and apparatus for scheduling deep learning reasoning engines, device, and medium
CN111259205B (zh) 一种图数据库遍历方法、装置、设备及存储介质
CN111459645B (zh) 一种任务调度方法、装置和电子设备
KR102485228B1 (ko) 블록체인의 스마트 계약 구현 방법, 장치, 기기 및 매체
CN111930487A (zh) 作业流调度方法、装置、电子设备及存储介质
CN111352706B (zh) 一种数据访问方法、装置、设备及存储介质
CN112286851B (zh) 服务器主板、服务器、控制方法、电子设备及可读介质
CN111913810B (zh) 多线程场景下的任务执行方法、装置、设备和存储介质
CN111176838B (zh) 为二分图中的节点分配嵌入向量的方法以及装置
CN111339202B (zh) 一种数据访问方法、装置、设备及存储介质
CN110908675B (zh) 运行环境获取方法、装置和电子设备
CN111782357A (zh) 标签控制方法及装置、电子设备和可读存储介质
CN111339187A (zh) 基于智能合约的数据处理方法、装置、设备和存储介质
CN112527451B (zh) 容器资源池的管理方法、装置、设备以及存储介质
KR102454665B1 (ko) 블록체인의 리소스 처리 방법, 장치, 기기 및 매체
CN112085471B (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
TA01 Transfer of patent application right

Effective date of registration: 20211025

Address after: 105 / F, building 1, No. 10, Shangdi 10th Street, Haidian District, Beijing 100085

Applicant after: Apollo Intelligent Technology (Beijing) Co.,Ltd.

Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100085

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant