CN105359104B - 状态信息的同步点 - Google Patents

状态信息的同步点 Download PDF

Info

Publication number
CN105359104B
CN105359104B CN201380077657.1A CN201380077657A CN105359104B CN 105359104 B CN105359104 B CN 105359104B CN 201380077657 A CN201380077657 A CN 201380077657A CN 105359104 B CN105359104 B CN 105359104B
Authority
CN
China
Prior art keywords
thread
gui
display tree
synchronous point
tree
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
CN201380077657.1A
Other languages
English (en)
Other versions
CN105359104A (zh
Inventor
C.福蒂尼
B.E.曼托斯
G.A.沃特斯
黄立新
R.K.詹姆斯
S.R.福蒂纳
R.S.布里格斯
S.Z.马尔金
Y.王
R.马里亚尼
J.E.罗杰斯
A.S.帕里克
P.K.姆拉利达尔劳
M.P.科切纳斯
J.J.韦伯
N.潘克拜
R.阿塔纳索夫
P.萨拉斯
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105359104A publication Critical patent/CN105359104A/zh
Application granted granted Critical
Publication of CN105359104B publication Critical patent/CN105359104B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23258GUI graphical user interface, icon, function bloc editor, labview
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Abstract

介绍了用于状态信息的同步点的技术。在至少一些实施例中,采用同步点来在不同的处理线程间传播状态信息。例如,可以采用同步点来在不同的独立运行的线程间传播状态信息。由此,在至少一些实施例中,同步点充当不同的独立运行的线程间的线程间通信工具。

Description

状态信息的同步点
背景技术
今天的计算装置具有量值不断增大的处理能力。例如,典型的装置具有带有多个处理内核的中央处理单元(CPU),这些处理内核可以各自执行数据处理。此外,单个处理器上可用的内核数目还在继续增加。随着多核处理器的风靡,带来了在一个CPU上并行地执行多个处理任务的能力。例如,多个各自掌管一个具体处理任务的处理线程可以在各自相应的处理器内核上同时运行。这样,完成多个任务的速度相比于以前的单核处理器会得到增加。
虽然可用的处理能力已经提高了,但是很多计算进程仍然采用串行处理办法来调度和/或管理处理任务。例如,一些应用没有被配置为使某些处理任务并行化,并且如此一来就不会利用多核处理器的并行处理能力的优势。不使处理任务并行化,这些进程就不会收获由并行处理带来的性能收益。
发明内容
本发明内容部分是为了以简化的形式引入具体实施方式部分将会进一步详细介绍的概念的选择。本发明内容部分并非试图认定所要求保护主题的关键特征或基本特征,更不是想要被用作确定所要求保护主题的范围的辅助。
介绍了用于状态信息的同步点的技术。在至少一些实施例中,采用同步点来在不同的处理线程间传播状态信息。例如,可以采用同步点来在不同的独立运行的线程间传播状态信息。由此,在至少一些实施例中,同步点充当不同的独立运行的线程间的线程间通信工具。
附图说明
具体实施方式部分是参照附图进行说明的。在图中,附图标记最左侧的(多个)数字标明了该附图标记首次出现的附图。在说明书和附图中不同情形下使用相同的附图标记指示这是类似或相同的项目。
图1是可操作用来采用本文讨论的技术的示例实现方案中的环境的示意图。
图2示出按照一个或多个实施例的示例实现方案。
图3示出按照一个或多个实施例的示例实现方案。
图4示出按照一个或多个实施例的示例实现方案。
图5示出按照一个或多个实施例的示例实现方案。
图6示出按照一个或多个实施例的示例实现方案。
图7是介绍按照一个或多个实施例的方法中的步骤的流程图。
图8是介绍按照一个或多个实施例的方法中的步骤的流程图。
图9示出如参照图1介绍的示例系统和计算装置,它们被配置为用来实现本文介绍的技术的实施例。
具体实施方式
概述
将会介绍用于状态信息的同步点的技术。在至少一些实施例中,会采用同步点来在不同的处理线程间传播状态信息。可以采用同步点来,例如,在不同的独立运行的线程间传播状态信息。
例如,考虑网络浏览器显示一个网页的情形。本文讨论的技术可以利用第一个线程来执行针对该网页的各种不同的处理,比如网页格式化任务、布局任务、输入处理任务等等。可以采用第二个独立运行的线程来执行该网页的呈现任务,比如生成该网页的像素数据和促使该像素数据被显示。
基于对网页可视属性的处理,第一个线程可以发出包括针对该网页的可视状态信息的同步点。可视状态信息,例如,可以包括网页可视状态的改变,比如网页图形元素的运动、图形元素的缩放和/或重新着色,等等。在发出同步点之后,第一个线程可以继续执行其它处理,比如生成另外的同步点。
就示例情形而言,进一步地,第二个线程可以取得并处理由第一个线程发出的同步点,并且基于来自同步点的状态信息呈现该网页。这样一来,第一个线程不依赖于处理同步点的第二个线程,并且可以在第二个线程基于同步点进行处理和/或呈现的同时执行各种各样的其它类型的处理。
由此,在至少一些实施例中,同步点起到了使得状态信息能够在不同的独立运行的线程间传播的线程间通信工具的作用。
在下面的讨论中,首先会介绍一个示例环境,并且该示例环境适合于采用本文介绍的技术。接着,标题为"示例实现方案"的部分会介绍按照一个或多个实施例的某些示例实现方案。在此之后,标题为"示例过程"的部分会介绍按照一个或多个实施例的某些示例方法。最后,标题为"示例系统和装置"的部分会介绍按照一个或多个实施例的适合于采用本文讨论的技术的示例系统和装置。
在给出了按照一个或多个实施例的示例实现方式的概述之后,现在将考虑可以采用示例实现方式的示例环境。
示例环境
图1是适合于采用本文介绍的用于状态信息的同步点的技术的示例实现方式中的环境100的示意图。所图示的环境100包括可以以多种多样的方式配置的计算装置102。例如,计算装置102可以被配置为传统计算机(例如,台式个人计算机、膝上型计算机等等)、移动站、娱乐器材、与电视可通信地耦合的机顶盒、无绳电话、上网本、游戏控制台、手持装置(例如平板电脑)等等,将会参照图9作进一步介绍。
计算装置102包括处理器104,处理器104代表为计算装置102执行各种不同类型的数据处理的功能体。例如,处理器104可以代表计算装置102的中央处理单元(CPU)。处理器104包括多个能够独立执行处理任务的处理器内核。如此一来,处理器104就被配置为执行并行处理,比如同时运行多个处理线程。后面将会参照图9讨论处理器104的实现方式的更多例子。
计算装置102此外还包括应用106,应用106代表经由计算装置102执行各种不同任务的功能体。应用106的例子包括文字处理软件应用、电子邮件应用、内容编辑应用、游戏应用等等。
应用106包括网络平台应用108,它代表与网络内容相关地操作的应用。网络平台应用108,例如,可以包括和利用很多不同类型的技术,比如,举例来说并且并非限定,统一资源定位符(URL)、超文本传输协议(HTTP)、表述性状态传递(REST)、超级文本标记语言(HTML)、层叠样式表(CSS)、Java脚本、文档对象模型(DOM)以及其它技术。网络平台应用108还可以应对各种各样的数据格式,比如可扩展应用标记语言(XAML)、可扩展标记语言(XML)、Java脚本对象表示法(JSON)等等诸如此类。网络平台应用108的例子包括网络浏览器、网络应用(例如,"网络app")等等。
此外还示出了一个进程管理器模块110,它代表为计算装置102管理处理任务的各个不同方面的功能体。还包括一个图形模块112,该模块代表为计算装置102执行各种不同的与图形有关的任务的功能体。例如,图形模块112可以执行图形处理、呈现任务等等。图形模块112,例如,可以是应用106的呈现引擎,比如网络平台应用108的呈现引擎。在至少一些实施例中,可以利用进程管理器模块110和/或图形模块112很好地实现本文讨论的用于状态信息的同步点的技术。
尽管进程管理器模块110和图形模块112被图示为和申请106分开,但并不意图受此限制。进程管理器模块110和/或图形模块112,例如,可以被实现为应用106的一部分和/或扩展部分,从而应用106可以很好地利用它们各自的功能。另外或此外,进程管理器模块110和/或图形模块112可以被实现为计算装置102的操作系统的一部分。下面将会讨论进程管理器模块110和图形模块112的更进一步的操作情况。
计算装置102包括显示装置114,该显示装置114被配置为用于为计算装置102输出图形。在显示装置114上显示了一个图形用户界面(GUI)116,它代表应用106之一所关联的GUI。GUI 116,例如,可以包括经由网络平台应用108供应的网络内容。例如,GUI 116可以展现网络文档,比如网页。按照一个或多个实施例,可以采用本文介绍的状态信息的同步点的技术来执行与GUI 116相关的各种各样的处理任务,比如布局处理、输入处理、图形呈现等等。
在介绍了本文介绍的技术可以在其中运作的示例环境之后,现在考虑一些按照一个或多个实施例的示例实现方案。
示例实现方案
下面的讨论内容介绍本文介绍的状态信息的同步点的技术的一些示例实现方案。可以在图1的环境100、图9的系统900和/或任何其它适当的环境当中实施该示例实现方案。这些方案,例如,可以代表进程管理器模块110和/或图形模块112的功能。例如,不同方案中讨论的处理线程可以是由进程管理器模块110和/或图形模块112生成和/或维护的。
图2示出按照一个或多个实施例的示例实现方案200。方案200包括GUI 202,它代表可以被显示的各种不同的图形元素。GUI 202,例如,可以是前面参照环境100讨论的GUI116的实现方式。GUI 202包括可视元素202a。
方案200此外还包括主要线程204和呈现线程206,这两个线程代表被用来执行作为生成、管理和呈现GUI 202的过程中的一部分的各种不同处理任务的线程。
总地来说,主要线程204是执行针对GUI 202的各种不同类型的管理任务的处理线程。管理任务的例子包括生成GUI 202,比如用于应用106之一的GUI 202。管理任务的其它例子包括用于GUI 202的运行脚本(例如JScript)、GUI格式化任务、GUI布局任务、DOM操作等等。呈现线程206代表执行呈现操作的处理线程,比如将GUI 202的像素涂画到显示器上。例如,可以由呈现线程206呈现由主要线程204产生的GUI 202可视样貌的改变以进行显示。按照各种不同的实施例,主要线程204可以把各种不同的图形信息传递给呈现线程206来进行呈现和显示。
再继续看方案200的中央部分,GUI 202可视样貌的变化促使主要线程204生成图形数据208。图形数据208,例如,可以描述GUI 202可视样貌的变化。这些变化的例子包括颜色变化、可视元素缩放、可视元素活动、可视元素改变位置等等。变化,例如,可以是响应于用户经由各种不同类型的用户输入与GUI 202进行的交互而发生的。
响应于生成图形数据208,生成了适于绘图的同步点(PSP)。总地来说, PSP 210代表可以由呈现线程206用来呈现GUI 202的各个部分的一组信息。PSP 210,例如,可以包括和/或基于该图形数据208。另外或此外,PSP 210可以包括足以使得呈现线程206能够取得图形数据208的信息,比如图形数据208驻留于的存储器地址和/或地址。
在至少一些实施例中, PSP 210包括GUI 202的各种不同类型的状态信息。例如,PSP 210可以包括状态变化信息,比如自从前一PSP生成和/或由呈现线程206执行前一呈现操作以来发生了变化的GUI 202的可视属性的指示。如此以来,按照一个或多个实施例,PSP210可以不包括用于完整呈现GUI 202的数据,而是可以简单地指明足以将GUI 202更新到新的可视状态的状态变化信息。不过,这并非用来限定,并且在至少一些实施例中,PSP可以代表GUI的完整呈现。例如,实施例可以利用部分和完整PSP信息的组合来传播状态信息。
在发出PSP 210之后,主要线程204可以继续用于GUI 202的处理管理任务,例如,不必等待呈现线程206取得和/或处理该PSP 210。
再看方案200的下部,呈现线程206对PSP 210进行处理,以生成状态变化212。总地来说,状态变化212是基于来自PSP 210的状态信息的GUI 202的一部分的重新呈现。如此一来,状态变化212被应用于GUI 202(例如,作为呈现和/或画图操作的一部分)来使得GUI202的可视状态与PSP 210指明的可视状态相同步。在这个具体的例子中,应用状态变化212会造成可视元素202a改变位置,例如,可视元素202a在GUI 202内做平移运动。
如此一来,方案200示出的是,可以经由PSP将第一线程生成的图形元素的可视状态的变化封装起来,该PSP可以由第二线程消费,以用于施加这些变化。此外,第一线程可以在发出PSP之后继续执行其它的处理任务,例如,不等待PSP被处理。这保证了处理器资源的有效使用,并且通过提供更加无缝化的可视体验,提高了用户体验的整体质量。这样,在至少一些实施例中,PSP提供了使得状态信息可以在独立的线程之间传递的机制。
在至少一些实施例中,本文讨论的技术能够实现多个PSP被异步地生成和处理。例如,考虑下面的示例方案。
图3示出按照一个或多个实施例的示例实现方案300。方案300包括GUI 302,它代表可以被显示的各种不同的图形元素。GUI 302,例如,可以是前面参照环境100讨论的GUI116的实现方式。GUI 302包括可视元素302a。
方案300此外还包括用于GUI 302的主要线程304和呈现线程306。前面已经讨论了与主要线程和呈现线程相关的示例细节。基于GUI 302的可视状态变化,生成包括多个PSP的PSP队列308。例如, PSP队列308包括由主要线程304生成的PSP 310、PSP 312和PSP 314。可以基于各种不同的事件生成PSP,比如用户与GUI 302的交互、由进程产生的事件等等。如前面提到的,PSP 310、312、314对应于GUI 302的可视状态的变化。例如,PSP 310、312、314可以对应于GUI 302中可视元素302a的运动。
在至少一些实施例中,当主要线程304生成PSP的速度比呈现线程306处理和应用PSP的速度快时,可以将PSP累积在PSP队列308中。例如,呈现线程306可能正在基于最近消费的PSP执行复杂又耗时的呈现操作,从而主要线程304在呈现线程306完成复杂的呈现操作之前,会生成额外的PSP。这样,可以将PSP按照时间上连续的顺序排成队列,在队列中较旧的PSP放在较新的PSP前面。
再看方案300的下部,呈现线程306从PSP队列308中取得PSP 310。呈现线程306对PSP 310进行处理,以生成状态变化310a。状态变化310a对应于GUI 302可视状态的变化。例如,状态变化310a代表GUI 302的前一可视状态与当前可视状态之间的差异。由此,在至少一些实施例中, PSP 310以及因此状态变化310a并不代表GUI 302的完整重新呈现,而是包括可以用于更新GUI 302的一部分的可视状态的数据。
呈现线程306将状态变化310a应用于GUI 302,比如通过重新呈现GUI的一部分。例如,呈现线程306可以基于来自从PSP 310生成的状态变化310a的数据,改变可视元素302a的可视样貌,比如对可视元素重新着色、缩放可视元素,等等。另外或此外,应用状态变化310a可以包括可视元素302a的运动,比如平移、旋转,等等。
响应于呈现线程306取得并处理PSP 310,PSP 312,314在PSP队列308中前移。这样,在呈现线程306完成PSP 310的处理和应用之后,呈现线程306可以取得和处理PSP 312。在至少一些实施例中,PSP被呈现线程306以主要线程304生成这些PSP并且将它们放到队列中的顺序从PSP队列308中消费。可以持续进行来自PSP队列308的PSP的处理,直到PSP队列308中不再留有其它的PSP供获取和/或GUI 302被关闭。
这样,主要线程304可以产生代表GUI 302的多个可视状态变化的PSP,并且可以将它们放在PSP队列308,以供呈现线程306进行后续处理。这使得主要线程304可以用来执行其它的处理任务,而不用等待呈现线程306从PSP队列中消费PSP。由此,主要线程304和呈现线程306可以独立地运行,而线程之间的交互是通过PSP进行的。
在至少一些实施例中,本文讨论的技术使得用户输入能够经由呈现线程得到高效处理。例如,考虑下面的示例方案。
图4示出按照一个或多个实施例的示例实现方案400。方案400包括GUI 402,它代表可以被显示的各种不同的图形元素。GUI 402,例如,可以是前面参照环境100讨论的GUI116的实现方式。GUI 402包括可视元素402a。
此外还示出了用于GUI 402的主要线程404和呈现线程406。前面已经讨论了与主要线程和呈现线程相关的细节。
继续到方案400的中央部分,用户向GUI 402提供输入408。输入408的例子包括触摸输入、鼠标输入、键盘输入、语音输入,等等。在至少一些实施例中,输入408代表从输入功能体(比如输入装置驱动器)接收的输入数据。
响应于接收到输入408,主要线程404对输入408进行处理,以产生 PSP 410。PSP410代表基于输入408的GUI 402变化。PSP 410,例如,可以指明GUI 402的各种不同操作。例如,PSP 410可以指明,GUI 402要在显示区域内被滚动、GUI 402的一部分被放大或缩小、可视元素402a发生变化等等。
继续到方案400的下部,呈现线程406取得并处理PSP 410,以生成GUI 402的状态变化410a。状态变化410a表明GUI 402基于PSP 410的重新呈现,例如,基于输入408。这样,呈现线程406基于输入408呈现GUI 402。如前面所指出的,这可以包括滚动GUI 402、缩放GUI 402的一部分、平移GUI 402和/或GUI 402各部分的其它操作。
这样,一旦呈现线程406获得了描述用户输入的数据(例如,从PSP和/或其它途径获得),呈现线程406就可以独立于同主要线程404的交互而将输入应用到GUI 402上。这使得主要线程404能够在呈现线程406正在应用输入的同时执行其它处理,并且使得呈现线程406能够基于输入408主动呈现GUI 402,即使此时主要线程404正忙于另一个任务。
按照各种不同的实施例,可以将描述显示器的可视区域(例如, GUI)的数据表示为树状结构或者"显示树"。总地来说,显示树是表示显示器的区域中的各种不同的可视元素的数据结构。显示树,例如,包括与GUI的各个可视元素相对应的不同节点。后文将会介绍,可以借由显示树的操控和版本来表征线程之间的交互。例如,考虑下面的示例方案。
图5示出按照一个或多个实施例的示例实现方案500。方案500包括GUI 502,它代表可以被显示的各种不同的图形元素。GUI 502,例如,可以是前面参照环境100讨论的GUI116的实现方式。GUI 502包括各种不同的可视元素,比如窗口、图形、文本、图像等等。
方案500此外还包括用于GUI 502的主要线程504和呈现线程506。前面已经讨论了与主要线程和呈现线程相关的示例细节。主要线程504与显示树508相关联,该显示树508是GUI 502的数据表达。显示树508,例如,包括代表GUI 502的各个不同可视元素的节点。例如,显示树508包括代表GUI 502的主窗口的父节点以及多个各自代表GUI 502的相应可视元素的子节点。
按照一个或多个实施例,主要线程504利用显示树508来执行用于GUI 502的各种不同的处理。例如,在表明针对GUI 502的可视元素进行修改的各种不同的事件发生时,主要线程504据此修改显示树508。这样,显示树508被主要线程504"拥有",并且可由主要线程504更新,以反映要被传播到GUI 502的各种不同的变化。
接着再看方案500的中央部分,由主要线程504按照本文介绍的各种不同的技术生成PSP 510。可以由主要线程504例如响应于改变GUI 502的可视样貌的各种不同事件发出PSP 510。PSP 510与显示树512相关联。
按照一个或多个实施例,显示树512代表在特定时刻捕捉到的显示树508的快照(例如,副本)。例如,主要线程504可以响应于各种不同的事件更改显示树508的一个或多个节点。主要线程504然后可以生成显示树508的副本作为显示树512。主要线程504发出包括和/或联系于显示树512的PSP 510。这样,显示树512对应于显示树508在特定时刻的状态。
在主要线程504发出了带有显示树512的PSP 510之后,该主要线程504可以继续执行其它任务。例如,主要线程可以对显示树508进行进一步更改,而不影响显示树512。
方案500此外还包括由呈现线程506维护的显示树514。总地来说,由呈现线程506利用显示树514来呈现GUI 502的可视样貌。例如,呈现线程506从显示树514中读取,以对GUI 502进行绘制。按照一个或多个实施例,显示树514是基于来自前一PSP(例如,在PSP510之前接收到的PSP)的显示树而生成和/或更改的。这样,显示树514是由呈现线程506"拥有"的。例如,在至少一些实施例中,主要线程504不能直接访问或更改显示树514。
继续看方案500的下部,呈现线程506取得PSP 510并且基于与PSP 510相关联的显示树512更改显示树514。显示树512,例如,可以表明显示树514的一个或多个节点的变化。这样,可以将这些变化从显示树512传播到显示树514。一旦显示树514的状态与显示树512的状态同步,呈现线程506就可以基于更新后的显示树514继续呈现GUI 502。
这样,由主要线程504对显示树508应用的可视处理被经由显示树512传播到了呈现线程506,呈现线程506然后将该可视处理应用于它自己的显示树514。
在方案500下部进一步示出的是主要线程504发出包括显示树518的PSP 516。和显示树512一样,显示树518是由主要线程504生成的显示树508的副本。显示树518,例如,包括在显示树512被生成之后发生的显示树508状态的变化。
当呈现线程506完成了从显示树514的当前状态对GUI 502进行绘制时,呈现线程506可以取得PSP 516并且可以将显示树514与显示树518同步。呈现线程506然后可以基于更新后的显示树514继续进行GUI 502的呈现。
这样,方案500示出了可以为显示区域维持的各种不同的显示树状态。例如,就GUI502而言,可以为GUI 502保持至少三种显示树状态。主要线程504维护着它将会把GUI 502可视状态的各种不同变化加诸于上的显示树508。为了使得GUI 502可视状态的变化能够被传播到呈现线程506并且被显示,可以借由中间态显示树捕捉显示树508的状态,该中间态显示树可以被持续保留以供呈现线程506消费。例如,显示树512,518是在显示树508的不同状态下捕捉到的显示树508的快照。此外,呈现线程506维护着显示树514,呈现线程506会将显示树514与中间态显示树同步并且从显示树514中读取来对GUI 502进行呈现。
在至少一些实施例中,可以采用PSP来传播显示树的变化,而不需要生成显示树的完整副本。例如,考虑下面的示例方案。
图6示出按照一个或多个实施例的示例实现方案600。方案600包括GUI 602,它代表可以被显示的各种不同的图形元素。GUI 602,例如,可以是前面参照环境100讨论的GUI116的实现方式。GUI 602包括各种不同的可视元素,比如窗口、图形、文本、图像等等。
方案600此外还包括用于GUI 602的主要线程604和呈现线程606。前面已经讨论了与主要线程和呈现线程相关的示例细节。主要线程604与显示树608相关联,该显示树608是GUI 602的数据表达。
接着再看方案600的中央部分,由主要线程604按照本文讨论的各种不同的技术生成PSP 610。可以由主要线程604例如响应于改变GUI 602的可视样貌的各种不同事件发出PSP 610。
PSP 610包括变化数据612,该数据代表显示树608已经发生的变化。例如,主要线程604可以响应于各种不同的事件更改显示树608的一个或多个节点。还可以做出其它类型的改变,比如添加节点、删除节点、重新排布节点等等。主要线程604然后可以生成变化数据612,变化数据612明确说明对显示树608做出的改变。主要线程604发出包括和/或联系于变化数据612的PSP 610。按照各种不同的实施例,变化数据612对应于自前一PSP发出之后发生的显示树608变化。这样,PSP 612并不包括显示树608的完整副本。
在主要线程604发出了带有变化数据612的PSP 610之后,该主要线程604可以继续执行其它任务。例如,主要线程可以对显示树608进行进一步更改,而不影响变化数据612。
方案600此外还包括由呈现线程606维护的显示树614。总地来说,由呈现线程606利用显示树614来呈现GUI 602的可视样貌。显示树614,例如,对应于基于前一PSP生成的显示树608的版本。
接着再看方案600的下部,呈现线程606取得PSP 610并且基于变化数据612来更改显示树614。这样,变化数据612中指示的变化可以被应用到显示树614上。呈现线程606然后可以基于更新后的显示树614继续进行GUI 602的呈现。
按照各种不同的实施例,PSP 610持续保留,直到呈现线程606完成从PSP 610中读取数据和/或以其它方式利用PSP 610。例如, PSP 610表示显示树608保持有效并且可由呈现线程606使用的有效状态,直到呈现线程606释放PSP 610,和/或向前移动处理下一个PSP。在至少一些实施例中,在呈现线程606完成对PSP 610的处理之后,用于PSP 610的一个存储器地址和/或多个地址可以被释放,以便供它用,例如,供后续PSP使用。
这样,由主要线程604对显示树608应用的可视处理被经由变化数据612传播到了呈现线程606,呈现线程606然后将该可视处理应用于它自己的显示树614。
在方案600下部进一步示出的是主要线程604发出包括变化数据618的PSP 616。变化数据618,例如,表明在主要线程604发出PSP 610之后发生的显示树608状态的变化。
当呈现线程606完成了从显示树614的当前状态对GUI 602进行的绘制时,呈现线程606可以取得PSP 616并且可以基于变化数据618对显示树614进行同步。呈现线程606然后可以基于更新后的显示树614继续进行GUI 602的呈现。
这样,方案600示出了可以采用PSP在线程间共享GUI可视状态的变化,而又不用产生多个用于GUI的显示树的副本。此外,可以对PSP生命周期加以管理,以使得显示树的特定状态能够在生成该PSP的主要线程执行其它处理的时候为呈现线程持续保留。
虽然前面给出的方案是参照呈现方案讨论的,但是这并非有意进行的限定。例如,可以使用同步点在作为多种不同处理和/或任务的一部分的多种不同的线程之间传播状态信息。
在至少一些实施例中,GUI可以包括不能或不得在一个不同的线程上分开呈现的特定元素,例如,出于经济或正确性的原因。因此,可以将这样的实施例选择为在主要线程上处理PSP,直到它们再次相信使用呈现线程获得改善性能是适当的为止。此外,可以将这些实施例选择为取决于资源的可用程度延缓创建呈现线程、暂停呈现线程或者关闭呈现线程。
在讨论了一些示例实现方案之后,现在考虑讨论按照一个或多个实施例的一些示例处理过程。
示例处理过程
下面的讨论将会介绍按照一个或多个实施例的状态信息的同步点的一些示例处理过程。可以在图1的环境100、图9的系统900和/或任何其它适当的环境当中采用这些示例处理过程。
图7是介绍按照一个或多个实施例的方法中的步骤的流程图。该方法是参照与第一线程相关联的步骤和与第二线程相关联的步骤来讨论的。第一线程和第二线程可以与多种不同的进程和/或任务相关联。
步骤700确定要传播到另一个线程的状态变化。如前面所讨论的,状态变化可以与图形元素可视样貌的变化有关,比如GUI的一部分的变化。不过,按照各种不同的实施例,也可以传播多种其它类型的状态变化。状态变化,例如,可以与和计算装置相关联的各种不同的进程和/或资源有关。
步骤702发出包括状态变化指示的同步点。就可视样貌的变化而言,例如,同步点可以包括和/或识别表明可视样貌要被如何改变的数据。例如,同步点可以包括定义如何呈现和显示图形元素的图形元素显示树的一个或多个部分。另外和/或此外,同步点识别在哪里可以找到状态变化的数据,比如存储器地址。
在至少一些实施例中,发出同步点可以包括将同步点放到同步点队列中。例如,如果仍然有一个或多个其它的同步点等待处理,可以将同步点放在同步点队列中这些其它同步点的后面,从而使得不同的同步点可以被按顺序处理。
步骤704在发出同步点之后继续执行其它任务。第一线程,例如,可以延续执行其它任务,比如产生额外的同步点。这样,第一线程不必等到同步点被第二线程消费之后再继续进行处理。
步骤706取得同步点。第二线程,例如,可以从同步点队列中取得同步点。
步骤708对同步点进行处理以确定状态变化。状态变化例如可以与图形元素可视状态的变化有关,比如GUI的变化。不过,如前面所提到的,实施例并不局限于可视元素的状态变化,并且可以指的是各种不同进程、资源等等中的状态变化。
步骤710应用状态变化。状态变化,例如,可以被应用于与同步点相关联的进程和/或资源。例如,可以应用状态变化来改变图形元素的可视外观。
图8是介绍按照一个或多个实施例的方法中的步骤的流程图。该方法是参照与主要线程相关联的步骤和与呈现线程相关联的步骤来讨论的。前面已经讨论了主要线程和呈现线程的示例实施例和功能。
步骤800生成图形元素可视状态的变化。例如,主要线程可以执行造成图形元素发生变化的各种类型的处理,比如GUI的可视变化。如前面所讨论的,主要线程可以对主要线程维护的显示树进行更改。
步骤802发出包括可视状态变化的指示的同步点。同步点,例如,可以包括表征该变化的数据和/或可以识别可以在哪里取得该数据。例如,同步点可以包括和/或识别由主要线程维护的显示树版本。
步骤804在发出同步点之后继续执行其它任务。主要线程,例如,在继续执行其它处理任务之前不必等待呈现线程消费该同步点。
步骤806取得同步点。呈现线程,例如,可以从同步点队列中取得同步点。
步骤808对同步点进行处理以确定图形元素可视状态的变化。例如,可以检查同步点包括和/或识别的显示树。
步骤810呈现该图形元素以应用可视状态的变化。呈现线程,例如,可以将可视状态的变化应用于呈现线程所维护的显示树。呈现线程然后可以基于更新后的显示树呈现图形元素。
虽然本文是参照两个不同的线程之间的交互来讨论实施例的,但是这仅仅是为了举例而给出的。例如,在至少一些实施例中,多个不同的线程可以产生同步点并且可以发出由特定线程处理的同步点。在GUI呈现方案中,例如,多个不同的线程可以产生指明GUI可视样貌的变化的同步点。同步点可以由不同的线程发出,以便由呈现线程消费。
在讨论了一些示例处理过程之后,现在考虑讨论按照一个或多个实施例的示例系统和装置。
示例系统和装置
图9示出了总体上用900标注的示例系统,它包括示例计算装置902,该计算装置902代表可以实施本文介绍的各种不同技术的一个或多个计算系统和/或装置。例如,前面参照图1讨论的计算装置102可以被具体实现为计算装置902。计算装置902可以是,例如,服务供应方的服务器、与客户关联的装置(例如,客户装置)、片上系统和/或任何其它适当的计算装置或计算系统。
如图所示的示例计算装置902包括可通信地彼此耦合的处理系统904、一个或多个计算机可读介质906和一个或多个输入/输出(I/O)接口908。虽然未示出,但是计算装置902此外还可以包括系统总线或者将各种不同的部件相互耦合起来的其它数据和命令传递系统。系统总线可以包括不同总线结构中的任何一种或组合,比如存储器总线或存储控制器、外围总线、通用串行总线和/或利用各种总线体系结构中的任何一种的处理器或本地总线。还可以设想各种各样的其它的例子,比如控制和数据线。
处理系统904代表使用硬件执行一个或多个操作的功能体。由此,处理系统904被图示为包括可以被配置为处理器、功能块等等的硬件元件910。这可以包括用硬件实现为专用集成电路或者使用一个或多个半导体形成的其它逻辑装置。硬件元件910并不受限于形成它们的材料或者其中所采用的处理机制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的情形下,处理器可执行指令可以是电子可执行指令。
计算机可读介质906被图示为包括存储器/存储部912。存储器/存储部912代表与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储部912可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(例如只读存储器(ROM)、闪速存储器、光盘、磁盘等等)。存储器/存储部912可以包括固定介质(例如,RAM、ROM、固定硬盘等等)以及可移动介质(例如,闪速存储器、可移动硬盘、光盘等等)。计算机可读介质906可以以各种各样的其它方式配置,下文将对此进一步介绍。
(多个)输入/输出接口908代表使得用户能够将命令和信息输入到计算装置902中并且还使得信息能够被展现给用户和/或使用各种不同的输入/输出装置的其它部件或装置的功能体。输入装置的例子包括键盘、光标控制装置(例如,鼠标)、麦克风(例如,用于语音识别和/或讲话输入)、扫描仪、触摸功能体(例如,被配置为用来检测物理接触的电容性或其它传感器)、相机(例如,可以采用可见光或不可见光波长,比如红外频率来检测不涉及接触的运动来作为手势)等等。输出装置的例子包括显示装置(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应装置等等。这样,计算装置902可以以下文进一步介绍的各种各样的方式来配置,以支持用户交互。
本文可以在软件、硬件元件或程序模块的整体背景下介绍各种不同的技术。一般来说,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等等。本文使用的术语"模块"、"功能体"和"组件"一般地表示软件、固件、硬件或它们的组合。本文介绍的技术的特征是与平台无关,意思是说这些技术可以在各种各样的具有各种各样的处理器的商用计算平台上实施。
所介绍的模块和技术的实施例可以被存储在某种形式的计算机可读介质上或者通过某种形式的计算机可读介质传送。计算机可读介质可以包括可由计算装置902访问的各种各样的介质。举例来说并且并非限定,计算机可读介质可以包括"计算机可读存储介质"和"计算机可读信号介质"。
"计算机可读存储介质"可以指的是不同于仅仅信号传输、载波或信号本身,实现长久信息存储的介质和/或装置。因而,计算机可读存储介质并不包括信号本身。计算机可读存储介质包括诸如易失性和非易失性的、可移动的和不可移动介质这样的硬件和/或用适合于存储诸如计算机可读指令、数据机构、程序模块、逻辑元件/电路或其它数据之类的信息的方法或技术实现的存储装置。计算机可读存储介质的例子可以包括,但不局限于,RAM、ROM、EEPROM、闪速存储器或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光存储、硬盘、磁带盒、磁带、磁盘存储器或其它磁性存储装置或者适合于存储想要的信息并且可以由计算机访问的其它存储装置、有形介质或制品。
"计算机可读信号介质"可以指的是被配置为向计算装置902的硬件传送指令的信号承载媒介,比如经由网络。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其它数据具体实现在诸如载波之类的调制数据信号、数据信号或其它传输机制中。信号介质还包括任何信息传递介质。术语"调制数据信号"指的是使得它的特征中的一个或多个以将信息编码在该信号中的方式被设置或改变的信号。举例来说并且并非限定,通信介质包括诸如有线网络或直接线接连接这样的有线介质和诸如声波、射频(RF)、红外和其它无线介质这样的无线介质。
如前面所介绍的,硬件元件910和计算机可读介质906代表可以在某些实施例中采用以实现本文介绍的技术的至少某些方面的、以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)和用硅或其它硬件器件的实现方式的组件。在这种情形下,硬件元件可以作为处理装置操作,执行由硬件元件以及用来存储用来执行的指令的硬件装置(例如前面介绍的计算机可读存储介质)收录的指令、模块和/或逻辑定义的程序任务。
还可以采用前述的组合来实现本文介绍的各种不同的技术和模块。由此,可以将软件、硬件或程序模块以及其它程序模块实现为收录在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件910具体实现的一个或多个指令和/或逻辑。计算装置902可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。由此,可以至少部分地用硬件来获得那些可由计算装置902作为软件执行的模块实现,例如通过使用计算机可读存储介质和/或处理系统的硬件元件910。指令和/或功能可以是可由一个或多个制品(例如,一个或多个计算装置902和/或处理系统904)执行/操作的,以实现本文介绍的技术、模块和例子。
如图9中进一步示出的,示例系统900实现了当在个人计算机(PC)、电视装置和/或移动装置上运行应用时为无缝用户体验提供了无所不在的环境。在使用应用、玩视频游戏、观看视频等等的时候从一个装置转换到另一个时,对于同一个用户体验而言,服务和应用在所有三个环境中表现得基本相同。
在示例系统900中,多个装置通过中央计算装置相互连接。中央计算装置可以与多个装置同在本地的或者可以位于多个装置的远程位置。在一个实施例中,中央计算装置可以是一个或多个服务器计算机组成的云,这些计算机通过网络、因特网或其它数据通信链路与多个装置连接。
在一个实施例中,这一相互连接的结构使得功能能够在多个装置间传递,以便为多个装置的用户提供共有且无缝的体验。多个装置中的每一个都可以具有不同的物理要求和能力,并且中央计算装置使用平台来实现既为装置量身定制又对所有装置通用的体验向装置的传递。在一个实施例中,创建目标装置的类别,并且对同属类别的装置量身定制体验。装置的类别可以用物理特征、用途类型或装置的其它共有特征来定义。
在各种不同的实现方式中,计算装置902可以采用各种各样不同的配置,比如用于计算机914、移动装置916和电视918的配置。这些配置中的每一个都可以包括可以具有总体上不同的构造和能力的装置,并且因此可以按照不同装置类别中的一个或多个来配置计算装置902。例如,可以将计算装置902实现为计算机914类别的装置,包括个人计算机、台式计算机、多屏计算机、膝上型计算机、上网本等等。
还可以将计算装置902实现为移动装置916类别的装置,包括移动装置,比如移动电话、便携式音乐播放器、便携式游戏装置、平板计算机、多屏计算机等等。还可以将计算装置902实现为电视918类别的装置,包括具有或连接于在非正式的观看环境中通常较大的屏幕的装置。这些装置包括电视、机顶盒、游戏控制台等等。
本文介绍的技术可以由计算装置902的这些各种不同配置来支持并且并不局限于本文介绍的技术的具体实例。例如,参照进程管理器模块110和/或图形模块112讨论的功能体可以全部或部分地通过使用分布式系统来实现,比如经由平台922在"云"920上实现,下文将对此加以介绍。
云920包括和/或代表用于资源924的平台922。平台922抽象了云920的硬件(例如,服务器)和软件资源的底层功能。资源924可以包括在远离计算装置902的服务器上运行计算机处理的时候可以利用的应用和/或数据。资源924还可以包括在因特网上和/或通过订户网络(比如蜂窝或Wi-Fi网络)提供的服务。
平台922可以抽象将计算装置902与其它计算装置连接的资源和功能。平台922还可以用于抽象资源的规模,以便为针对经由平台922实现的资源924的冲突需求提供相应的规模水平。由此,在相互连接的装置的实施例中,本文介绍的功能的实现可以是分布在整个系统900各处的。例如,该功能可以部分地实现在计算装置902上以及经由抽象云920的功能的平台922实现。
本文讨论了可以用来执行本文讨论的技术的多种方法。这些方法的各个方面可以用硬件、固件或软件或者它们的组合来实现。这些方法被表示为一组明确规定了由一个或多个装置执行的操作的步骤,并且这些步骤不必局限于所示的由相应的块执行操作的顺序。此外,针对特定方法示出的操作可以与按照一个或多个实现方式的不同方法的操作组合和/或互换。这些方法的各个方面可以经由前面参照环境100讨论的各种不同实体之间的交互来实现。
结论
介绍了用于状态信息的同步点的技术。虽然实施例是用针对结构特征和/或方法动作的具体语言介绍的,但是应该理解,所附权利要求书中定义的实施例不必局限于所介绍的具体的特征或动作。而是,具体的特征和动作是作为实现所要求保护的实施例的示例形式公开的。

Claims (10)

1.一种用于信息处理的系统,包括:
至少一个处理器;和
一个或多个计算机可读存储介质,包括存储于其上的指令,这些指令响应于由所述至少一个处理器的运行,会使得该系统执行如下操作,包括:
运行第一线程,以生成图形元素可视状态的变化,所述图形元素由所述第一线程的第一显示树中的对应节点表示,所述第一线程还被配置为发出同步点,该同步点包括可视状态的变化的指示并且至少在第二线程取得并处理该同步点以更新所述第二线程的第二显示树中的对应节点中的图形元素的可视状态之前一直保持有效状态;和
运行第二线程,以处理该同步点,从而确定可视状态的变化,更新所述第二线程的所述第二显示树中的图形元素的所述可视状态,并且基于所述第二线程的所述第二显示树中的图形元素的更新后的所述可视状态,呈现该图形元素以应用可视状态的变化。
2.按照权利要求1所述的系统,其中所述运行第一线程包括借由第一处理器内核运行第一线程,并且其中所述运行第二线程包括借由第二处理器内核运行第二线程。
3.按照权利要求1所述的系统,其中图形元素包括由网络平台应用生成的网络文档的至少一部分。
4.按照权利要求1所述的系统,其中所述运行第一线程包括将同步点添加到同步点队列中,并且其中所述运行第二线程包括在对同步点进行处理之前从同步点队列中取得同步点。
5.按照权利要求1所述的系统,其中:
所述运行第一线程包括更改由第一线程维护的用于图形元素的第一显示树的版本,以反映可视状态的变化,并且将所述第一显示树的更改版本的副本与同步点关联起来;和
所述运行第二线程包括将显示树的更改版本的副本中的状态信息传播到由第二线程维护的所述第二显示树的版本中,并且基于由第二线程维护的所述第二显示树的版本来呈现该图形元素。
6.一个或多个计算机可读存储介质,包括存储于其上的指令,这些指令响应于由计算装置的运行,会使得该计算装置执行如下操作,包括:
接收对图形用户界面(GUI)的输入;
基于用户输入经由主要线程生成GUI可视状态的一个或多个变化,所述GUI由所述主要线程的第一显示树表示,所述主要线程还被配置为发出同步点,该同步点包括GUI可视状态的一个或多个变化的指示并且在主要线程执行其它处理的时候且至少在呈现线程基于所述一个或多个变化更新所述呈现线程的第二显示树中的GUI的可视状态之前都保持有效状态;和
经由呈现线程处理该同步点,以确定可视状态的所述一个或多个变化,将所述变化应用于所述呈现线程的所述第二显示树,以生成用于所述GUI的更新后的显示树,基于可视状态的所述一个或多个变化呈现GUI。
7.如权利要求6所述的一个或多个计算机可读存储介质,其中所述输入包括来自用户的触摸输入,用来执行GUI的至少一部分的滚动或缩放中的一个或多个。
8.一种计算机实现的方法,包括:
经由第一处理器内核运行第一线程,以生成图形用户界面(GUI)可视状态的一个或多个变化,并且发出同步点,该同步点包括GUI可视状态的所述一个或多个变化的指示,该指示被表示为GUI的所述第一线程的第一显示树的变化,该同步点至少在另一个线程对该同步点进行处理之前都会保持有效状态;和
经由第二处理器内核运行第二线程,以处理该同步点,从而确定GUI可视状态的所述一个或多个变化,将这些变化应用于所述第二线程的第二显示树以生成用于GUI的更新后的显示树,并且基于该更新后的显示树呈现GUI。
9.如权利要求8所述的方法,其中GUI包括网络文档,并且其中第一线程和第二线程是由用于生成了该网络文档的网络平台应用的图形模块管理的。
10.按照权利要求8所述的方法,其中:
所述运行第一线程包括更改由第一线程维护的用于GUI的所述第一显示树的版本,以反映可视状态的变化,并且将所述第一显示树的更改版本的副本与同步点关联起来;和
所述运行第二线程包括将所述第二显示树的更改版本的副本中的状态信息传播到由第二线程维护的显示树的版本中,并且基于由第二线程维护的所述第二显示树的版本来呈现该GUI。
CN201380077657.1A 2013-06-19 2013-09-20 状态信息的同步点 Active CN105359104B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/921727 2013-06-19
US13/921,727 US9430808B2 (en) 2013-06-19 2013-06-19 Synchronization points for state information
PCT/US2013/061060 WO2014204502A1 (en) 2013-06-19 2013-09-20 Synchronization points for state information

Publications (2)

Publication Number Publication Date
CN105359104A CN105359104A (zh) 2016-02-24
CN105359104B true CN105359104B (zh) 2019-05-31

Family

ID=49354895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077657.1A Active CN105359104B (zh) 2013-06-19 2013-09-20 状态信息的同步点

Country Status (5)

Country Link
US (1) US9430808B2 (zh)
EP (1) EP3011451A1 (zh)
KR (1) KR102040359B1 (zh)
CN (1) CN105359104B (zh)
WO (1) WO2014204502A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633408B2 (en) 2013-06-14 2017-04-25 Microsoft Technology Licensing, Llc Coalescing graphics operations
US10466974B2 (en) * 2015-04-14 2019-11-05 Microsoft Technology Licensing, Llc Independent expression animations
US10430208B2 (en) * 2017-05-02 2019-10-01 Huawei Technologies Co., Ltd. Multi-version asynchronous dynamic software update system and method for applications with multiple threads
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11778045B2 (en) 2021-07-12 2023-10-03 Red Hat, Inc. Communication system for micro-frontends of a web application

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426735B2 (en) * 2000-10-17 2008-09-16 Microsoft Corporation Threading and communication architecture for a graphical user interface
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
CN102968755A (zh) * 2011-09-09 2013-03-13 微软公司 基元组成

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3417392B2 (ja) * 2000-09-08 2003-06-16 ヤマハ株式会社 同期制御装置
US7228500B2 (en) 2003-06-13 2007-06-05 Microsoft Corporation Web page rendering priority mechanism
WO2005083533A1 (en) * 2004-02-25 2005-09-09 Beptech, Inc. Method of programming a processing system
US20070139430A1 (en) 2005-12-21 2007-06-21 Microsoft Corporation Rendering "gadgets" with a browser
US20090210631A1 (en) 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
US8020089B1 (en) 2006-10-23 2011-09-13 Adobe Systems Incorporated Rendering hypertext markup language content
US8260864B2 (en) 2008-02-13 2012-09-04 Microsoft Corporation Push mechanism for efficiently sending aggregated data items to client
US20120151408A1 (en) 2008-11-26 2012-06-14 Lila Aps (AHead) Dynamic network browser
US8654134B2 (en) 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US8325177B2 (en) 2008-12-29 2012-12-04 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-D objects
US8751955B2 (en) * 2009-03-28 2014-06-10 International Business Machines Corporation Scrollbar user interface for multitouch devices
US8527646B2 (en) 2009-04-14 2013-09-03 Avid Technology Canada Corp. Rendering in a multi-user video editing system
US20100287553A1 (en) 2009-05-05 2010-11-11 Sap Ag System, method, and software for controlled interruption of batch job processing
US9245371B2 (en) * 2009-09-11 2016-01-26 Nvidia Corporation Global stores and atomic operations
US20110298787A1 (en) 2010-06-02 2011-12-08 Daniel Feies Layer composition, rendering, and animation using multiple execution threads
US20120159363A1 (en) 2010-12-16 2012-06-21 Microsoft Corporation Z-order bands
US8589950B2 (en) 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
US9104475B2 (en) 2011-04-07 2015-08-11 Qualcomm Innovation Center, Inc. Methods and apparatus for managing operations of a web browser by predicting time period of subsequent script execution activity
US9442780B2 (en) 2011-07-19 2016-09-13 Qualcomm Incorporated Synchronization of shader operation
US20130097534A1 (en) 2011-10-18 2013-04-18 Research In Motion Limited Method of rendering a user interface
US9665353B2 (en) 2012-11-08 2017-05-30 Facebook, Inc. Progressive rendering of data sets
US20140157108A1 (en) 2012-11-30 2014-06-05 Meteor Development Group, Inc. Live-updating web page generation
US9633408B2 (en) 2013-06-14 2017-04-25 Microsoft Technology Licensing, Llc Coalescing graphics operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426735B2 (en) * 2000-10-17 2008-09-16 Microsoft Corporation Threading and communication architecture for a graphical user interface
CN102224476A (zh) * 2008-10-14 2011-10-19 奥布隆工业有限公司 多进程交互系统和方法
CN102968755A (zh) * 2011-09-09 2013-03-13 微软公司 基元组成

Also Published As

Publication number Publication date
CN105359104A (zh) 2016-02-24
KR20160022362A (ko) 2016-02-29
EP3011451A1 (en) 2016-04-27
US9430808B2 (en) 2016-08-30
US20140375657A1 (en) 2014-12-25
WO2014204502A1 (en) 2014-12-24
KR102040359B1 (ko) 2019-11-04

Similar Documents

Publication Publication Date Title
US11386258B2 (en) Dynamic scalable vector graphics (SVG) system and methods for implementing the same
US10691299B2 (en) Display of hierarchical datasets using high-water mark scrolling
US11790158B1 (en) System and method for using a dynamic webpage editor
CN104995601B (zh) 切换到本机网页应用程序及从本机网页应用程序切换离开
KR102108583B1 (ko) 인스턴스화가능한 제스처 객체
US20170115968A1 (en) Application builder with automated data objects creation
US20160085735A1 (en) Dynamic column groups in excel
US20120233239A1 (en) Device Specific Handling of User Interface Components
US11245951B2 (en) Display device and content providing method thereof
US10970052B2 (en) System and method for enhancing component based development models with auto-wiring
CN105359104B (zh) 状态信息的同步点
CN110347472A (zh) 可扩展应用表示、活动水平和桌面表示
US10776570B2 (en) Supporting digital ink in markup language documents
US10712913B2 (en) Event-based architecture for expand-collapse operations
CN105324795B (zh) 合并图形操作
US11954421B2 (en) Reducing data usage for rendering state changes
US20230247102A1 (en) Addressing previous client device technology in online platforms
US11947442B2 (en) Session replay for mobile applications
US20230350964A1 (en) Platform independent session player

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant