CN115543343B - 变量跨线程操作方法及装置 - Google Patents

变量跨线程操作方法及装置 Download PDF

Info

Publication number
CN115543343B
CN115543343B CN202211496332.4A CN202211496332A CN115543343B CN 115543343 B CN115543343 B CN 115543343B CN 202211496332 A CN202211496332 A CN 202211496332A CN 115543343 B CN115543343 B CN 115543343B
Authority
CN
China
Prior art keywords
target
thread
variable
operation request
state
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
CN202211496332.4A
Other languages
English (en)
Other versions
CN115543343A (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.)
Chongqing Big Data Research Institute Of Peking University
Peking University
Original Assignee
Chongqing Big Data Research Institute Of Peking University
Peking University
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 Chongqing Big Data Research Institute Of Peking University, Peking University filed Critical Chongqing Big Data Research Institute Of Peking University
Priority to CN202211496332.4A priority Critical patent/CN115543343B/zh
Publication of CN115543343A publication Critical patent/CN115543343A/zh
Application granted granted Critical
Publication of CN115543343B publication Critical patent/CN115543343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/457Communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种变量跨线程操作方法及装置。其中,该方法包括:第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。本申请解决了变量跨线程操作时无法降低多线程之间的耦合度,导致各个线程的执行效率较低的技术问题。

Description

变量跨线程操作方法及装置
技术领域
本申请涉及软件开发技术领域,具体而言,涉及一种变量跨线程操作方法及装置。
背景技术
在软件开发过程中,通常允许多线程并发控制,但当多个线程同时对一个可共享资源变量进行增、删、改、查操作,或者多个线程同时调用一个函数时,多个线程并发控制可能会导致数据不准确,且各个线程之间极易产生冲突。
目前,相关操作系统在面对多线程同时操作一个可共享资源变量或者同时调用一个函数,需要耗费大量的时间成本。例如,当各个线程上的开发团队在进行研发工作时,需要就实际需求时间、函数接口、功能实现和调用情况等进行反复沟通,因此需要耗费大量的时间成本和人力成本,且无法在保证各线程安全的情况下,降低一个可共享资源变量或者一个函数在多线程中执行时不同线程之间的耦合度,提升线程的执行效率。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种变量跨线程操作方法及装置,以至少解决变量跨线程操作时无法降低多线程之间的耦合度,导致各个线程的执行效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种变量跨线程操作方法,包括:第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
可选地,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,包括:第一线程确定具有目标权限的第二线程;第一线程依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
可选地,在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,还包括:第二线程通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
可选地,在第二线程通过预设的第一循环监测程序周期性读取操作请求标志之后,还包括:第二线程在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
可选地,第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果,包括:第一线程通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,第一线程接收第二线程依据目标协议反馈的目标操作结果。
可选地,第一线程在具有目标权限时,直接对目标变量进行操作。
根据本申请实施例的另一方面,还提供了一种变量跨线程操作装置,包括:响应模块,用于响应于对目标变量进行操作的目标操作指令,判断第一线程是否具有对目标变量进行操作的目标权限;发送模块,用于在第一线程不具有目标权限时,依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;接收模块,用于接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,非易失性存储介质所在设备通过运行该程序执行上述的变量跨线程操作方法。
根据本申请实施例的另一方面,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行上述的变量跨线程操作方法。
在本申请实施例中,第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果,从而通过目标协议将第一线程上不具有操作权限的变量在第二线程上进行操作,避免在软件开发过程中多方团队的反复沟通,节省交流时间成本,进而解决了变量跨线程操作时无法降低多线程之间的耦合度,导致各个线程的执行效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的变量跨线程操作方法的流程示意图;
图2是根据本申请实施例的一种可选的变量跨线程操作的示意图;
图3是根据本申请实施例的一种可选的变量跨线程操作装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
在软件开发过程中,当多个线程同时操作一个可共享资源变量,或者是多个线程同时调用一个函数时,多个线程并发控制可能会导致数据不准确,且各线程之间会产生冲突。
近些年来,Mac操作系统内核规定多线程同时执行时,只有主线程可以写显卡。若在多方合作时主线程和从线程的开发团队都有写显卡的需求,那么主线程上执行代码块的开发团队需要不断和从线程上执行代码块的开发团队进行沟通,从而了解从线程上执行代码块的开发团队的实际需求的具体时间,函数接口、功能实现和调用情况,再帮助从线程执行相应的代码块,整个过程不仅会耗费大量的交流时间成本和人力成本,还会大大增加软件开发过程中的合作难度。
而Windows操作系统自带的消息机制可以解决上述问题,但Windows操作系统的弊端在于,其必须有对应的窗口支持,且消息队列在资源紧缺时,容易出现消息丢失。
因此,上述两种操作系统均无法保证各线程安全的情况下,降低一个可共享资源变量或者一个函数在多线程中执行时不同线程之间的耦合度,并提升各线程的执行效率。
为了解决上述问题,本申请实施例提供了一种变量跨线程操作方法,该方法在应用于从线程侧。其中,在进行变量跨线程调用操作时,第一线程和第二线程采用统一的目标协议。当第一线程上不具有对目标变量的操作权限时,可以依据目标协议向第二线程准确地发送目标操作请求,并接收第二线程依据目标协议反馈的操作结果,整个操作过程可以有效避免在软件开发过程中多方团队的反复沟通,节省交流时间成本,进而解决了变量跨线程操作时无法降低多线程之间的耦合度,导致各个线程的执行效率较低的技术问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种可选的变量跨线程操作方法的流程示意图,如图1所示,该方法至少包括步骤S102-S106,其中:
步骤S102,第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限。
其中,上述第一线程为从线程,目标变量可以为目标代码块,目标操作指令可以是在目标代码块上对可共享变量进行增、查、删、改等操作,或者在目标代码块上调用一个函数。
具体地,在对从线程上的目标代码块进行操作时,首先需要判断该从线程是否具有对目标代码块进行操作的目标权限。
若从线程具有对目标代码块进行操作的目标权限时,直接在从线程上对目标代码块进行操作。例如,操作指令是读函数操作,且该从线程上具有读函数的权限时,直接在从线程上对目标代码块执行读函数操作。
若从线程不具有对代码块进行操作的目标权限时,比如操作指令是写显卡操作,而写显卡操作通常只能在主线程上执行,因此,需要通过步骤S104实现写显卡操作。
步骤S104,在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作。
其中,第二线程可以但不仅限于为主线程。
具体地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
作为一种可选的实施方式,在第一线程不具有目标权限时,第一线程首先确定具有目标权限的第二线程;第一线程再依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
而在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,具有目标权限的第二线程为了准确地读取第一线程发送的目标操作请求,第二线程还可以通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
举例而言,当前有两个开发团队合作开发一个软件,前端开发团队1的代码块在主线程上执行,绘图插件开发团队2的代码块在从线程上执行,且前端开发团队1和绘图插件开发团队2均有写显卡的需求,由于只有主线程才可以执行写显卡操作,因此,绘图插件开发团队2所在的从线程上不具有操作权限。
图2示出了一种可选的变量跨线程操作的示意图,其中,由于绘图插件开发团队2需要在代码块2-4上执行写显卡操作,但绘图插件开发团队2所在从线程的代码块2-4不具有执行写显卡操作的操作权限,因此,绘图插件开发团队2所在的从线程依据预设的目标协议向具有目标权限的主线程发送对代码块2-4的操作请求,从而避免前端开发团队1和绘图插件开发团队2的前期沟通,了解绘图插件开发团队2的实际需求的具体时间,函数接口、功能实现和变量调用等情况,再帮助绘图插件开发团队2完成代码块2-4的操作,有效降低了软件开发中的合作难度。
首先,绘图插件开发团队2所在的从线程不具有写显卡的操作权限时,确定具有写显卡的操作权限的主线程;接着依据目标协议向主线程发送在主线程上运行代码块2-4的操作请求,同时主线程为了避免消息丢失,且可以准确读取到从线程的操作请求,主线程通过第一循环监测程序周期性读取操作请求标志flag_act,当操作请求标志flag_act设置为true(即第一状态)时,主线程接收绘图插件开发团队2所在的从线程依据目标协议向主线程发送运行代码块2-4的操作请求;然后主线程依据目标协议运行代码块2-4,得到相应的操作结果;最后,主线程依据目标协议向绘图插件开发团队2所在的从线程反馈相应的操作结果,同时,将与绘图插件开发团队2所在的从线程对应的操作完成标志flag_down设置为true,此时该从线程完成对代码块2-4的操作。
作为另一种可选的实施方式,第二线程在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
例如,若软件开发过程中,多个开发团队所在的从线程均需要执行写显卡操作时,则多个从线程需要向主线程上发送操作请求,此时,主线程会接收到与多个从线程对应的多个操作请求,同时将主线程的操作请求标志flag_act设置为true。
为了避免多个从线程之间发成冲突,造成数据丢失,可以依据主线程接收到的多个操作请求的先后时间对多个操作请求进行排序,按照从前到后的顺序依次处理接收到的操作请求。另外,当同一时间接收到多个操作请求时,可以按照对应代码块的操作优先级顺序依次处理多个操作请求。
步骤S106,第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,第一线程通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,第一线程接收第二线程依据目标协议反馈的目标操作结果。
具体地,如图2所示,为了实时了解主线程是否完成运行代码块的操作请求,绘图插件开发团队2所在的从线程可以依据第二循环监测程序周期性读取操作完成标志flag_down,并在操作完成标志flag_down为true时,绘图插件开发团队2所在的从线程接收主线程依据目标协议反馈的操作结果。
在本申请实施例中,通过接收目标操作指令,其中,目标操作指令用于对目标变量进行操作;在从线程不具有对目标变量进行操作的权限时,依据预设的目标协议向主线程发送目标操作请求,其中,主线程具有对目标变量进行操作的权限,目标操作请求用于请求主线程对目标变量进行操作;接收主线程依据目标协议反馈的对目标变量的目标操作结果,从而通过目标协议将从线程上不具有操作权限的变量在主线程上进行操作,避免在软件开发过程中多方团队的反复沟通,节省交流时间成本,进而解决了变量跨线程操作时无法降低多线程之间的耦合度,导致各个线程的执行效率较低的技术问题。
实施例2
根据本申请实施例,还提供了一种用于实现上述变量跨线程操作方法的变量跨线程操作装置,如图3所示,该变量跨线程操作装置中至少包括响应模块31,发送模块32和接收模块33,其中:
响应模块31,用于响应于对目标变量进行操作的目标操作指令,判断第一线程是否具有对目标变量进行操作的目标权限。
其中,上述第一线程为从线程,目标变量可以为目标代码块,目标操作指令可以是在目标代码块上对可共享变量进行增、查、删、改等操作,或者在目标代码块上同时调用一个函数。
具体地,响应模块31在对目标代码块进行操作时,首先需要判断该从线程是否具有对目标代码块进行操作的目标权限。
若从线程具有对目标代码块进行操作的目标权限时,直接在从线程上对目标代码块进行操作。例如,操作指令是读函数操作,且该从线程上具有读函数的权限时,直接在从线程上对目标代码块执行读函数操作。
若从线程不具有对代码块进行操作的目标权限时,比如操作指令是写显卡操作,而写显卡操作通常只能在主线程上执行,因此,需要通过发送模块32实现写显卡操作。
发送模块32,用于在第一线程不具有目标权限时,依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作。
其中,第二线程可以但不仅限于为主线程。
具体地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
作为一种可选的实施方式,在第一线程不具有目标权限时,发送模块32首先确定具有目标权限的第二线程;第一线程再依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
而在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,具有目标权限的第二线程为了准确地读取第一线程发送的目标操作请求,第二线程还可以通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
作为另一种可选的实施方式,发送模块32在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
例如,若软件开发过程中,多个开发团队所在的从线程均需要执行写显卡操作时,则多个从线程需要向主线程上发送操作请求,此时,主线程会接收到与多个从线程对应的多个操作请求,同时将主线程的操作请求标志flag_act设置为true。
为了避免多个从线程之间发成冲突,造成数据丢失,可以依据主线程接收到的多个操作请求的先后时间对多个操作请求进行排序,按照从前到后的顺序依次处理接收到的操作请求。另外,当同一时间接收到多个操作请求时,可以按照对应代码块的操作优先级顺序依次处理多个操作请求。
接收模块33,用于接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,为了实时了解主线程是否完成运行目标代码块的操作请求,接收模块33通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,接收模块33接收第二线程依据目标协议反馈的目标操作结果。
需要说明的是,本申请实施例中的变量跨线程操作装置中的各模块与实施例1中的变量跨线程操作方法的各实施步骤一一对应,由于实施例1中已经进行了详尽的描述,本实施例中部分未体现的细节可以参考实施例1,在此不再过多赘述。
实施例3
根据本申请实施例,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,非易失性存储介质所在设备通过运行该程序执行实施例1中的变量跨线程操作方法。
具体地,非易失性存储介质所在设备通过运行该程序执行实现以下步骤:第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
可选地,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,包括:第一线程确定具有目标权限的第二线程;第一线程依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
可选地,在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,还包括:第二线程通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
可选地,在第二线程通过预设的第一循环监测程序周期性读取操作请求标志之后,还包括:第二线程在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
可选地,第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果,包括:第一线程通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,第一线程接收第二线程依据目标协议反馈的目标操作结果。
实施例4
根据本申请实施例,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行实施例1中的变量跨线程操作方法。
具体地,程序运行时执行实现以下步骤:第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
可选地,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,包括:第一线程确定具有目标权限的第二线程;第一线程依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
可选地,在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,还包括:第二线程通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
可选地,在第二线程通过预设的第一循环监测程序周期性读取操作请求标志之后,还包括:第二线程在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
可选地,第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果,包括:第一线程通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,第一线程接收第二线程依据目标协议反馈的目标操作结果。
实施例5
根据本申请实施例,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行实施例1中的变量跨线程操作方法。
具体地,处理器被配置为通过计算机程序执行实现以下步骤:第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对目标变量进行操作的目标权限;在不具有目标权限时,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,其中,目标操作请求用于请求第二线程对目标变量进行操作;第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果。
可选地,目标协议中至少包括操作请求标志和操作完成标志,其中,第一状态的操作请求标志用于反映存在第一线程向第二线程发送目标操作请求,第二状态的操作请求标志用于反映不存在第一线程向第二线程发送目标操作请求;第一状态的操作完成标志用于反映第二线程已完成对目标变量的操作,第二状态的操作完成标志用于反映第二线程未完成对目标变量的操作。
可选地,第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求,包括:第一线程确定具有目标权限的第二线程;第一线程依据目标协议向第二线程发送目标操作请求,并将与第一线程对应的操作请求标志设置为第一状态。
可选地,在第一线程依据预设的目标协议向具有目标权限的第二线程发送目标操作请求之后,还包括:第二线程通过预设的第一循环监测程序周期性读取操作请求标志;在操作请求标志为第一状态时,第二线程接收第一线程依据目标协议发送的目标操作请求,并对目标变量进行操作,得到目标操作结果;第二线程依据目标协议向第一线程反馈目标操作结果,并将与第二线程对应的操作完成标志设置为第二状态。
可选地,在第二线程通过预设的第一循环监测程序周期性读取操作请求标志之后,还包括:第二线程在读取到与多个第一线程对应的多个操作请求标志均为第一状态时,依据预设规则对接收到的多个第一线程发送的多个目标操作请求进行排序,并依次处理多个目标操作请求;其中,预设规则包括以下之一:基于每个目标操作请求的接收时间对多个目标操作请求进行排序,基于每个目标操作请求对应的目标变量的优先级对多个目标操作请求进行排序。
可选地,第一线程接收第二线程依据目标协议反馈的对目标变量的目标操作结果,包括:第一线程通过预设的第二循环监测程序周期性读取操作完成标志;在操作完成标志的状态为第一状态时,第一线程接收第二线程依据目标协议反馈的目标操作结果。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (9)

1.一种变量跨线程操作方法,其特征在于,包括:
第一线程响应于对目标变量进行操作的目标操作指令,判断自身是否具有对所述目标变量进行操作的目标权限;
在不具有所述目标权限时,所述第一线程依据预设的目标协议向具有所述目标权限的第二线程发送目标操作请求,其中,所述目标操作请求用于请求所述第二线程对所述目标变量进行操作;
所述第一线程接收所述第二线程依据所述目标协议反馈的对所述目标变量的目标操作结果;
其中,所述目标协议中至少包括操作请求标志和操作完成标志;第一状态的所述操作请求标志用于反映存在所述第一线程向所述第二线程发送所述目标操作请求,第二状态的所述操作请求标志用于反映不存在所述第一线程向所述第二线程发送所述目标操作请求;第一状态的所述操作完成标志用于反映所述第二线程已完成对所述目标变量的操作,第二状态的所述操作完成标志用于反映所述第二线程未完成对所述目标变量的操作。
2.根据权利要求1所述的方法,其特征在于,所述第一线程依据预设的目标协议向具有所述目标权限的第二线程发送目标操作请求,包括:
所述第一线程确定具有所述目标权限的所述第二线程;
所述第一线程依据所述目标协议向所述第二线程发送所述目标操作请求,并将与所述第一线程对应的所述操作请求标志设置为所述第一状态。
3.根据权利要求2所述的方法,其特征在于,在所述第一线程依据预设的目标协议向具有所述目标权限的第二线程发送目标操作请求之后,所述方法还包括:
所述第二线程通过预设的第一循环监测程序周期性读取所述操作请求标志;
在所述操作请求标志为所述第一状态时,所述第二线程接收所述第一线程依据所述目标协议发送的所述目标操作请求,并对所述目标变量进行操作,得到所述目标操作结果;
所述第二线程依据所述目标协议向所述第一线程反馈所述目标操作结果,并将与所述第二线程对应的所述操作完成标志设置为所述第二状态。
4.根据权利要求3所述的方法,其特征在于,在所述第二线程通过预设的第一循环监测程序周期性读取所述操作请求标志之后,所述方法还包括:
所述第二线程在读取到与多个所述第一线程对应的多个所述操作请求标志均为所述第一状态时,依据预设规则对接收到的多个所述第一线程发送的多个所述目标操作请求进行排序,并依次处理多个所述目标操作请求;
其中,所述预设规则包括以下之一:基于每个所述目标操作请求的接收时间对多个所述目标操作请求进行排序,基于每个所述目标操作请求对应的所述目标变量的优先级对多个所述目标操作请求进行排序。
5.根据权利要求1所述的方法,其特征在于,所述第一线程接收所述第二线程依据所述目标协议反馈的对所述目标变量的目标操作结果,包括:
所述第一线程通过预设的第二循环监测程序周期性读取所述操作完成标志;
在所述操作完成标志的状态为所述第一状态时,所述第一线程接收所述第二线程依据所述目标协议反馈的所述目标操作结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一线程在具有所述目标权限时,直接对所述目标变量进行操作。
7.一种变量跨线程操作装置,其特征在于,包括:
响应模块,用于响应于对目标变量进行操作的目标操作指令,判断第一线程是否具有对所述目标变量进行操作的目标权限;
发送模块,用于在所述第一线程不具有所述目标权限时,依据预设的目标协议向具有所述目标权限的第二线程发送目标操作请求,其中,所述目标操作请求用于请求所述第二线程对所述目标变量进行操作;
接收模块,用于接收所述第二线程依据所述目标协议反馈的对所述目标变量的目标操作结果;
其中,所述目标协议中至少包括操作请求标志和操作完成标志;第一状态的所述操作请求标志用于反映存在所述第一线程向所述第二线程发送所述目标操作请求,第二状态的所述操作请求标志用于反映不存在所述第一线程向所述第二线程发送所述目标操作请求;第一状态的所述操作完成标志用于反映所述第二线程已完成对所述目标变量的操作,第二状态的所述操作完成标志用于反映所述第二线程未完成对所述目标变量的操作。
8.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,所述非易失性存储介质所在设备通过运行所述程序执行权利要求1至6中任意一项所述的变量跨线程操作方法。
9.一种电子设备,其特征在于,包括:存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器被配置为通过所述计算机程序执行权利要求1至6中任意一项所述的变量跨线程操作方法。
CN202211496332.4A 2022-11-28 2022-11-28 变量跨线程操作方法及装置 Active CN115543343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211496332.4A CN115543343B (zh) 2022-11-28 2022-11-28 变量跨线程操作方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211496332.4A CN115543343B (zh) 2022-11-28 2022-11-28 变量跨线程操作方法及装置

Publications (2)

Publication Number Publication Date
CN115543343A CN115543343A (zh) 2022-12-30
CN115543343B true CN115543343B (zh) 2023-04-07

Family

ID=84722195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211496332.4A Active CN115543343B (zh) 2022-11-28 2022-11-28 变量跨线程操作方法及装置

Country Status (1)

Country Link
CN (1) CN115543343B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3557947B2 (ja) * 1999-05-24 2004-08-25 日本電気株式会社 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US9348658B1 (en) * 2014-12-12 2016-05-24 Intel Corporation Technologies for efficient synchronization barriers with work stealing support
US10459771B2 (en) * 2017-02-22 2019-10-29 Red Hat Israel, Ltd. Lightweight thread synchronization using shared memory state
CN109165503B (zh) * 2018-06-22 2021-09-24 湖南鼎源蓝剑信息科技有限公司 基于rasp区分后台线程权限与ui线程权限的方法
CN111625330A (zh) * 2020-05-18 2020-09-04 北京达佳互联信息技术有限公司 跨线程的任务处理方法、装置、服务器及存储介质
CN111913810B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN115543343A (zh) 2022-12-30

Similar Documents

Publication Publication Date Title
CN103532823A (zh) 物联网消息处理方法、装置及系统
CN102541661B (zh) 实现等待地址同步接口的方法和设备
CN106897299B (zh) 一种数据库访问方法及装置
CN112035238A (zh) 任务调度处理方法、装置、集群系统及可读存储介质
CN111176801B (zh) 一种多进程管理方法、装置、设备及存储介质
CN111190854A (zh) 通信数据处理方法、装置、设备、系统和存储介质
CN113535425A (zh) 一种数据发送方法、装置、电子设备及存储介质
CN109976898B (zh) 分层任务系统的SPI与Eeprom异步通讯方法
CN110308880A (zh) 日志打印方法、系统、计算机设备及计算机可读存储介质
CN113849238B (zh) 数据通信方法、装置、电子设备及可读存储介质
CN110061844B (zh) 基于区块链的电子签名方法、电子装置及可读存储介质
CN115543343B (zh) 变量跨线程操作方法及装置
CN110908644B (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN111694787A (zh) 一种芯片启动的方法、网络设备和机器可读存储介质
CN111625350A (zh) 网络消息数据的内存分配方法、装置、设备及存储介质
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
CN109040491B (zh) 挂机行为处理方法、装置、计算机设备及存储介质
CN113867145A (zh) 一种应用控制方法、装置、电子设备及存储介质
CN109901933B (zh) 业务系统的操作方法及装置、存储介质、电子装置
CN112379952A (zh) 一种跨进程回调的实现方法
CN110908952B (zh) 一种数据处理方法、装置、cpu及计算机
CN110673931A (zh) 单证合成的分布式计算方法、单证合成系统及其控制装置
CN113360294B (zh) 多进程核间通信建立方法、系统、终端及存储介质
CN109460291A (zh) 电子装置、弹性控制服务器集群的方法及存储介质
CN112769688B (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