TWI610241B - 耐用性程式執行 - Google Patents
耐用性程式執行 Download PDFInfo
- Publication number
- TWI610241B TWI610241B TW103107030A TW103107030A TWI610241B TW I610241 B TWI610241 B TW I610241B TW 103107030 A TW103107030 A TW 103107030A TW 103107030 A TW103107030 A TW 103107030A TW I610241 B TWI610241 B TW I610241B
- Authority
- TW
- Taiwan
- Prior art keywords
- program
- response
- code
- history
- asynchronous
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在此敘述之標的的多數態樣與耐用性程式執行有關。於多數態樣中,敘述當一程式等待一非同步操作至完成時,允許從記憶體移除該程式之機制。當接收該非同步操作的回應時,完成資料則儲存於一歷史記錄中,重新執行該程式,並使用該歷史記錄中的該完成資料以完成該非同步操作。可重複以上該等動作直到在該歷史記錄中不再存在被擱置完成的非同步操作。
Description
本發明與耐用性程式執行有關。
長期執行程式可能具有多數事件之間的廣闊時間期,該等事件則與處理有關。為了保存資源,該程式可能需要在多數事件之間保存其狀態,因此可關閉該程式並從記憶體移除,直到接收到適用於該程式之次一事件。在多數其他理由以外,可以執行此動作,以為多數其他程式建立空間,以在該等計算資源上執行。為了適應保存狀態的需求,程式開發者必須撰寫與處理一事件連結而保存狀態至儲存器的程式碼。該程式開發者也可以撰寫在接收一新事件時,從儲存器裝入該狀態並以該適宜的動作繼續的程式碼。這對於程式開發者而言是麻煩的。
在此主張之標的,並不限制於解決像是以上所述環境中的任何缺點與操作的多數具體實施例。倒不如說,只提供此背景,以描述一示例技術範圍,而在此範圍中可以實作在此敘述的許多具體實施例。
簡單來說,在此揭示之標的的多數態樣,與耐用性
程式執行有關。在多數態樣中,敘述當一程式等待一非同步操作至完成時,允許從記憶體移除該程式之機制。當接收該非同步操作的回應時,完成資料則儲存於一歷史記錄中,重新執行該程式,並使用該歷史記錄中的該完成資料以完成該非同步操作。可重複以上該等動作直到在該歷史記錄中不再存在被擱置完成的非同步操作。
提供此【發明內容】簡短辨識該標的之某些態樣,
該標的則於以下【實施方式】中進一步敘述。此【發明內容】並不意欲辨識所主張標的的多數關鍵或基礎特徵,也不意欲用於限制所主張標的的範疇。
除非上下文明確另外指示,否則該用語「在此敘述
之標的」意指在【實施方式】中所敘述的標的。該用語「多數態樣」應該解讀為「至少一態樣」。在【實施方式】中所敘述之標的所辨識的多數態樣並不意欲辨識所主張標的的多數關鍵或基礎特徵。
100‧‧‧計算系統環境
110‧‧‧電腦
120‧‧‧處理單元
121‧‧‧系統匯流排
122‧‧‧安全裝置
320‧‧‧區塊步驟
322‧‧‧區塊步驟
323‧‧‧區塊步驟
325‧‧‧區塊步驟
330‧‧‧區塊步驟
335‧‧‧區塊步驟
340‧‧‧區塊步驟
345‧‧‧區塊步驟
410‧‧‧區塊步驟
415‧‧‧區塊步驟
420‧‧‧區塊步驟
425‧‧‧區塊步驟
430‧‧‧區塊步驟
於該等伴隨圖式中,將以實例而非限制之方式描述在此敘述之標的的上述該等態樣與其他態樣,相同的參考編號指示相同的元件,其中:第1圖為表現一示例一般用途計算環境的區塊圖式,可將在此敘述之標的的多數態樣整合於其中;第2圖為一區塊圖式,其概要表現根據在此敘述之標的的多數態樣,用於耐用性程式執行的多數示例元件;
第3圖至第4圖為流程圖式,其概要表現根據在此敘述之標的的多數態樣而可進行的多數示例動作,用於獲得來自一程式之多數非同步操作與對該等非同步操作之多數回應;第5圖為一流程圖式,其概要表現根據在此敘述之標的的多數態樣而可進行的多數示例動作,用以將程式碼提供至一執行環境;及第6圖為一流程圖式,其概要表現根據在此敘述之標的的多數態樣而可為一函式引動器進行的多數示例動作。
如在此使用,該用語「包含」以及其變化係解讀為一種開放用語,其意味著「包含,但不限制為」。除非上下文明確的另外指示,否則該用語「或」則解讀為「及/或」。該用語「根據於」係解讀為「至少部分根據於」。該用語「單一具體實施例」與「一具體實施例」則解讀為「至少一具體實施例」。該用語「另一具體實施例」則解讀為「至少一其他具體實施例」。
如在此使用,諸如「一」、「一個」與「該」的用語係包含一或多個所指項目或動作。特定而言,在該等申請專利範圍中,對一項目的參照一般而言意指存在至少一所述項目,對一動作的參照則意指至少執行該動作之一場合。
有時候在此可使用「第一」、「第二」、「第三」等等的用語。在不額外於上下文說明下,並不預期於該等申
請專利範圍中使用這些用語隱含著順序性,其只是用於辨識的目的。例如,該等片語「第一版本」與「第二版本」並不需要意指該第一版本剛好係第一個版本,或是第一個版本必須在該第二版本之前建立,或甚至在該第二版本之前必須請求或操作該第一版本。倒不如說,這些片語係用於辨識不同的版本。
標題只是為了方便而使用,對於一給定主題的資訊也可以在該標題指定為該主題的段落外找到。
其他顯性或隱性的定義則包含於下述段落。
第1圖描述一適宜的計算系統環境100實例,於該計算系統環境100上可以實作在此敘述之標的的多數態樣。該計算系統環境100僅為一適宜的計算環境實例,並不預期用於對於在此敘述該標的之多數態樣的使用或功能性的觀點進行任何限制。也不應該將該計算環境100解釋為對任何在示例性操作環境100中描述之件或其組合具有任何的相關性或必要性。
在此敘述之標的的多數態樣,操作上係利用許多其他一般目的或特殊目的計算系統、環境或配置。適合於在此敘述之標的的多數態樣所使用的習知計算系統、環境或配置的實例包括個人電腦、伺服器電腦(於裸機上或成為虛擬機器)、手持或膝上裝置、多處理器系統、微控制器基礎系統、機上盒、可編程及不可編程消費性電子裝置、網路化個人電腦、微型電腦、大型主機電腦、個人數位助理(PDA)、遊
戲裝置、印表機,包含機上盒、媒體中心或其他器具之器具、汽車內嵌或附加計算裝置、其他行動裝置、包含手機、無線話機及有線話機的電話裝置、包含上述任何系統或裝置的分散式計算環境,以及其他類似環境。
在此敘述之標的的多數態樣,可針對於電腦可執行
之多數指令的一般性背景敘述,諸如可由一電腦所執行的多數程式模組。一般而言,程式模組包含例行程式、程式、物件、組件、資料結構等等,其執行特定任務或實作特定的抽象資料類型。在此敘述之標的的多數態樣也可實作於分散式計算環境中,其中利用透過一通訊網路所鏈結的多數遠端處理裝置執行多數任務。在一分散式計算環境中,程式模組可位於包含多數記憶儲存裝置的本端或遠端電腦儲存媒體兩者之中。
替代或額外的,在此敘述之功能性可以至少部分由
一或多個硬體邏輯元件所執行。例如,可以使用的示例硬體邏輯元件類型包含場可程式閘陣列(FPGA)、程式特殊應用積體電路(ASIC)、程式特殊應用標準產品(ASSP)、單晶片系統(SOC)、複合可程式邏輯裝置(CPLD)與其他類似元件,但不限制於此。
參考第1圖,用於實作在此敘述該標的之多數態樣的示例系統包含具有一電腦110形式的一般目的計算裝置。一電腦可以包含能夠執行一指令的任何電子裝置。該電腦110的元件可以包含一處理單元120、一系統記憶體130與將包含該系統記憶體之各種系統元件耦接至該處理器120的一或
多個系統匯流排(以一系統匯流排121表現)。該系統匯流排121可為許多匯流排結構的任何類型,包含使用任意各種匯流排架構的一記憶體匯流排或記憶體控制器、一外圍裝置匯流排與一局部匯流排。作為實例而非為限制,所述架構包含工業標準架構(ISA)匯流排、微通道架構(MCA)匯流排、強化工業標準架構(EISA)匯流排、視訊電子標準協會(VESA)本端匯流排、也被知悉為夾層(Mezzanine)匯流排的週邊組件互連(PCI)匯流排、延伸週邊組件互連(PCI-X)匯流排、高等圖形埠口(AGP)與快速週邊組件互連(PCIe)。
該處理單元120可連接至一硬體安全裝置122。該
安全裝置122可以儲存並能夠產生密碼金鑰,用以保全該電腦110的各種態樣。在一具體實施例中,該安全裝置122可以包括一可信賴平台模組(TPM)晶片、可信賴平台模組(TPM)安全裝置或其他類似機制。
該電腦110一般而言包含各種電腦可讀媒體。電腦
可讀媒體可為任何可利用的媒體,其能由該電腦110所存取,並包含揮發性與非揮發性媒體兩種,以及可移除式及不可移除式媒體兩種。作為實例而非為限制,電腦可讀媒體可以包括電腦儲存媒體與通訊媒體。
電腦儲存媒體包含以任何方法或技術實作的揮發性
與非揮發性媒體兩種,以及可移除式及不可移除式媒體兩種,用以儲存資訊,諸如儲存多數電腦可讀指令、資料結構、程式模組或其他資料。電腦儲存媒體包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式唯讀記
憶體(EEPROM)、固態儲存器、快閃記憶體或其他記憶體技術、光碟片(CD-ROM),數位多功能光碟(DVD)或其他光碟儲存器、磁匣、磁帶、磁碟儲存器或其他磁性儲存裝置,或者任何可用於儲存所需資訊並可由該電腦110所存取的其他媒體。電腦儲存媒體並不包含通訊媒體。
通訊媒體一般而言將多數電腦可讀指令、資料結
構、程式模組或其他資料具現成為一經調變資訊訊號,諸如一載波或其他傳輸機制,並包含任何資訊傳送媒體。該用語「經調變資料訊號」意指一種使該資訊之一或多種特徵以所述方法設定或改變,而能將資訊編碼於該訊號之中的訊號。
作為實例而非為限制,通訊媒體包含諸如有線網路或直接有線連接的有線媒體,以及諸如聲學、射頻(RF)、紅外線和其他無線媒體等的無線媒體。以上所述的任意組合都應該被包含於電腦可讀媒體的範疇之中。
該系統記憶體130包含諸如唯讀記憶體(ROM)131
與隨機存取記憶體(RAM)132的揮發性及/或非揮發性記憶體形式之電腦儲存媒體。一基本輸入/輸出系統(BIOS)133,其中含有多數基本例行程式,協助諸如在開機期間,於該電腦110之中多數元件之間的資訊傳送,該基本輸入/輸出系統133一般而言儲存於該唯讀記憶體131中。該隨機存取記憶體132一般而言包含資料及/或多數程式模組,能立即由該處理單元120所存取及/或目前於該處理單元120上操作。作為實例而非為限制,第1圖描述一作業系統134、多數應用程式135、多數其他程式模組136與程式資料137。
該電腦110也可以包含其他可移除式/不可移除式、
揮發性/非揮發性電腦儲存媒體。僅作為實例,第1圖描述從不可移除式非揮發性磁性媒體讀取或寫入之一硬碟驅動機141、從可移除式非揮發性磁碟152讀取或寫入之一磁碟驅動機151,以及從可移除式非揮發性光碟156讀取或寫入之一光碟驅動機155,諸如從光碟片(CD-ROM)、數位多功能光碟(DVD)或其他光學媒體讀取或寫入。在該示例操作環境中可使用的其他可移除式/不可移除式、揮發性/非揮發性電腦儲存媒體包含磁帶匣、快閃記憶卡與其他固態儲存裝置、數位多功能光碟、其他光碟、數位視訊帶、固態隨機存取記憶體、固態唯讀記憶體等等。該硬碟驅動機141可透過該介面140連接至該系統匯流排121,而該磁碟驅動機151與光碟驅動機155可透過一介面連接至該系統匯流排121,諸如用於可移除式非揮發性記憶體的介面150。
以上在第1圖中討論與描述之該等裝置與其相關的
電腦儲存媒體,提供該電腦110多數電腦可讀指令、資料結構、程式模組與其他資料的儲存器。例如,在第1圖中,該硬碟裝置141係描述為儲存作業系統144、多數應用程式145、其他程式模組146與程式資料147。注意這些元件可與作業系統134、多數應用程式135、其他程式模組136與程式資料137相同或不同。在此,指定該作業系統144、多數應用程式145、其他程式模組146與程式資料147不同的編號,以描述其起碼係為不同的複本。
一使用者可以透過多數輸入裝置鍵入多數命令與資
訊至該電腦110中,諸如透過鍵盤162與指向裝置161,該指向裝置161一般意指為滑鼠、軌跡球或觸控板。其他(未圖示)輸入裝置可以包含麥克風(例如,用於輸入聲音或其他音訊)、搖桿、遊戲手把、衛星天線、掃瞄器、觸控螢幕、手寫板、相機(例如,用於輸入手勢或其他視覺輸入)等等。
這些與其他的輸入裝置通常透過一使用者輸入介面160連接至該處理單元120,該使用者輸入介面160與該系統匯流排連接,但也可以藉由其他介面與匯流排結構連接,諸如透過平行埠口、遊戲埠口或通用序列匯流排(USB)。
透過以上確定之該等輸入裝置之一或多種裝置的使
用,可以建立一自然使用者介面(NUI)。自然使用者介面,其可以依賴語音辨識、觸控與觸控筆辨識、於螢幕上與螢幕附近兩者的手勢辨識、懸浮手勢、頭部與眼球追蹤、聲音及語音、視覺、觸控、手勢、機器智慧等等。可用於與一使用者互動的某些示例自然使用者介面技術包含觸控感測顯示器、聲音與語音辨識、企圖與目標瞭解、使用深度相機(諸如實體鏡相機系統、紅外線相機系統、三元色(RGB)相機系統與其組合)進行的移動手勢偵測、使用加速度計/陀螺儀的移動手勢偵測、臉部辨識、三維展示、頭部、眼球與視線追蹤、臨場擴增實境與虛擬實境系統,以及用於使用電場感測電極(腦電圖(EEG)與相關方法)感測腦部動作的技術。
一監視器191或其他類型的顯示裝置也透過一介面
連接至該系統匯流排121,諸如透過一視訊介面190。除了該監視器以外,電腦也可以包含多數其他周圍輸出裝置,諸如
揚聲器197與印表機196,其可透過一周圍輸出介面195連接。
該電腦110可以利用對一或多個遠端電腦的多數邏
輯連接於一網路化環境中操作,該遠端裝置則諸如一遠端電腦180。該遠端電腦180可為一個人電腦、伺服器、路由器,網路化個人電腦、同級點裝置或其他常見的網路節點,且雖然在第1圖中只描述一記憶體儲存裝置181,但該遠端裝置一般而言可包含以上對於該電腦110所敘述的許多或所有元件。第1圖中所描繪之該等邏輯連接包含一區域網路(LAN)171和一廣域網路(WAN)173,但也可以包括電話網路、近場網路和其他網路。所述網路環境常見於辦公室、企業範圍的電腦網路、內部網路與網際網路。
當在一區域網路網路化環境中使用時,該電腦110
透過一網路介面或轉接器170連接至該區域網路171。當在一廣域網路網路化環境中使用時,該電腦110可以包含一數據機172或用於透過該廣域網路173建立通訊的其他手段,諸如網際網路。該數據機172可為內部或外部數據機,可透過該使用者輸入介面160或其他適宜機制連接至該系統匯流排121。在一網路化環境中,對於該電腦110所描繪之多數程式模組或該電腦110本身部分,可以儲存於一遠端記憶體儲存裝置中。作為實例而非為限制,第1圖描述多數遠端應用程式185係位於一記憶體裝置181上。將可理解所示之該等網路連接係為示例,並可以使用於該等電腦之間建立一通訊鏈結的多種其他手段。
如之前所提及,一程式可能具有多數事件之間的時間期,該等事件則與處理有關。例如,在促成與多數人員有關的工作流程式中,於多數事件之間可能為數天或數週。例如,在一編輯工作流中,可能在某天交付委任一撰寫專案,而在對該撰寫專案所進行的任何活動發生之前,可能為數天或數月。在完成一草案之後,在開始編輯之前可能有數天。甚至在處理嚴格自動化多數程序的程式中,即使在多數事件僅僅只間隔數分鐘或數秒鐘,但(例如,相對於中央處理器時間而言)該等事件之間的時間仍長。
第2圖為一區塊圖式,其概要表現根據在此敘述之標的的多數態樣,用於耐用性程式執行的多數示例元件。第2圖中描繪之該等元件係為示例,而並不意指需要或包括在該圖式中所包含的所有元件。此外,在不背離在此敘述之標的多數態樣的精神或範圍下,於多數其他具體實施例中該等元件數量可以不同。在某些具體實施例中,在不背離在此敘述之標的多數態樣的精神或範圍下,連結第2圖敘述之該等元件可以包含於多數(圖示或未圖示)其他元件之中,並位於多數子元件之中。在某些具體實施例中,連結第2圖敘述之該等元件及/或功能可以分散於多數裝置。
當在此使用時,該用語元件應被解讀為包含諸如一裝置之所有或一部份的硬體、該裝置之一或多個軟體模組或軟體部分的集合、該裝置之一或多個軟體模組或軟體部分的某些組合,或該裝置之一或多個裝置或部分,以及其他解讀方式。
例如,第2圖描述之該等元件可以使用一或多個計
算裝置實作。所述裝置例如可以包含個人電腦、伺服器電腦、手持或膝上裝置、多處理器系統、微控制器基礎系統、機上盒、可編程消費性電子裝置、網路化個人電腦、微型電腦、大型主機電腦、手機、個人數位助理(PDA)、遊戲裝置、印表機,包含機上盒、媒體中心或其他器具之器具、汽車內嵌或附加計算裝置、其他行動裝置、包含上述任何系統或裝置的分散式計算環境,以及其他類似環境。
可經配置以實作第2圖該等元件之一或多個元件的
示例裝置,係包括第1圖之該電腦110。
一元件也可以包含程式碼或以程式碼表現。程式碼包含多數指令,該等指令指示一電腦預備進行的多數動作。程式碼也可以包含不同於該電腦預備進行之多數動作的資訊,諸如資料、資源、變數、定義、關係、關聯與其他類似資訊。
程式碼可由一電腦執行。當由一電腦執行程式碼時,可稱之為程序。當在此使用時,該用語「程序」與其變化可以包含執行多數任務的一或多個傳統程序、執行緒、元件、函示庫、物件,以及其他類似項目。一程序可實作於硬體、軟體或硬體及軟體的組合中。在一具體實施例中,一程序雖然稱為程序,但其可為能夠或用於執行一動作的任何機制。一程序可分散於多數裝置或一單一裝置上。程式碼可以於使用者模式、核心模式、某些其他模式、上述模式之組合或其他類似模式中執行。
如同所描述,該環境200包含多數非同步元件205-207、一程式碼儲存器210、一歷史記錄儲存器211、一事件處理器215、一控制器220、一函式引動器230,並可以包含多數其他(未圖示)元件。與該系統互動之一使用者係圖示為使用者225,但在另一具體實施例中,該使用者可以以一程序、系統等等所置換,以引動與多數非同步操作有關之該程式碼。
該程式碼儲存器210與該歷史記錄儲存器211包含可以儲存資料的任何儲存媒體。一儲存器可以包含多數電腦儲存元件,諸如揮發性記憶體(例如,隨機存取記憶體或其他之前敘述的揮發性記憶體)及/或非揮發性記憶體(例如,硬碟或其他之前敘述的非揮發性記憶體)。一儲存器可以完全位於一裝置上,或可以散佈於多數裝置。一儲存器可為一儲存系統的外部、內部元件,或包含對一儲存系統而言為內部與外部兩者的元件,該儲存系統則主持該儲存器。一儲存器可以包含多數元件,以確保該儲存器具有交易性與耐用性。
該用語資料應被解讀為廣泛地包含可由一或多個電腦儲存元件所表現的任何事物。邏輯上,在揮發性或非揮發性記憶體中,可以利用1與0的序列代表資料。在具有一非二位元儲存媒體的多數電腦中,可以根據該儲存媒體的能力表示資料。資料可經組織於多種不同類型的資料結構之中,包含諸如數字、文字與其他類似類型等等的簡單資料類型,階層式、鏈結式或其他關聯資料類型、包含多重其他資料結構或簡單資料類型與其他類似類型的多種資料結構。某些資
料示例包含資訊、程式碼、程式狀態、程式資料、其他資料等等。
該程式碼儲存器210儲存該函式引動器230所能執行的程式碼。此程式碼實際上可為任何語言、腳本、非腳本或其他形式。
該函式引動器230係經組織(例如,透過程式碼及/或硬體)以執行及重新執行來自該程式碼儲存器210的程式碼。在執行來自該程式碼儲存器的程式碼時,可能遇到一非同步操作。非同步操作是一種可能完全無關於該主要程式流的操作。例如,一程式可以藉由請求一網頁的方式啟動一非同步操作。可由另一機器提供請求一網頁的服務,該另一機器需要不同時間量以提供該請求服務。
於一觀念中,回應為指示某些事情已被完成而滿足一非同步操作的資料。一回應可以包含或多或少的資訊。在上述的該網頁實例中,一回應可以包含一網頁的資料。然而,對於其他非同步操作的回應可以包含相對少的資訊。例如,一回應可以指示一非同步元件係經聯繫並受指令以執行。一回應可以包含由該非同步元件所提供的回傳程式碼或其他資料。一回應可以包含一錯誤程式碼,指示在嘗試滿足一非同步操作發生錯誤。
當該函式引動器230遇到該程式碼中一非同步操作時,首先,該函式引動器230可以找尋該歷史記錄儲存器211該非同步請求完成的指示。如果發現一完成記錄,該函式引動器230可以提供完成資料至該程式碼。完成資料可以指示
該非同步操作已經執行、完成及/或失敗,並可以包含任何存在的回應資料。如果並未找到一完成記錄,該函式引動器230可以傳送一命令至該控制器220。該命令可以提供有關於該操作的資訊,並允許該控制器220處理該非同步操作。
當該控制器220接收來自該函式引動器230之一命令時,該控制器220可以處理該命令。在處理該命令時,該控制器220可以開始一非同步操作,並更新該歷史記錄211以標記該非同步操作為已開始。該控制器220可以在該相同的交易中執行這些動作。為了開始一非同步操作,該控制器220可以排程對一非同步元件建立一請求的任務,該非同步元件則適用於該非同步操作。
該等非同步元件205-207可以包含多數電腦元件或提供非同步操作服務的其他實體。網頁伺服器已經如之前所敘述係為一種所述元件,但該領域技術人員將可理解有許多其他元件也可以提供多數非同步請求服務。例如,在一具體實施例中,該等非同步元件205-207可以只包含利用硬體及/或軟體建構的多數自動化元件。在另一具體實施例中,該等非同步元件205-207可以包含多數自動化元件及人員或其他實體兩者。在某些具體實施例中,該等非同步元件205-207可以包含多數電腦元件,其從多數人員及/或其他實體獲得輸入。例如,該等服務元件可以以程式碼形式存在,該程式碼於多數電腦上執行,提醒與在工作流中所涉及的人員某些任務欲被完成及提供,因此該工作流可以繼續完成。
如果該歷史記錄211並不包含該非同步操作之一完
成記錄,該函式引動器230可以繼續執行任何存在於該非同步操作之後的程式碼,除非該程式碼被阻塞於該非同步操作之完成,在所述情況中,該函式引動器230可以暫停該程式執行,並從該記憶體移除該程式,而不儲存與該程式有關的任何額外狀態。
當接收一回應時,該事件處理器215可以更新該歷史記錄儲存器211以指示一非同步元件已經回應該非同步操作。該事件處理器215也可以通知該函式引動器230已經接收關於該先前執行之程式碼的回應。在接收該通知之後,該函式引動器230可以從該開始狀態重新執行該程式碼。當再次執行該非同步操作時,該函式引動器230可以在該歷史記錄儲存器211中找到該完成資料。該函式引動器230可以供應該完成資料至該程式碼,接著便能完成該非同步操作。
以上敘述之程序可以如該程式碼包含之多數非同步操作重複許多次。最終,在該最後一次執行期間,該程式碼可以執行至完成,並使所有非同步請求完成。
以上程序允許該程式碼與狀態在多數執行之間從該記憶體移除,並允許一軟體開發者撰寫程式碼,而不需要擔心在處理每一次事件之後保存狀態。
此程式碼由該函式引動器230第一次引動之後,可在該歷史記錄儲存器211中建立一記錄,其辨識該程式已經開始執行。當遇到該指令「return context.httpSendWithPromise」時,使得該函式引動器230被呼叫。為了回應,該函式引動器230可以搜尋該歷史記錄儲存器211,以檢查其中是否記錄有與該非同步操作相應的完成資料。
如果該歷史記錄儲存器211並不包含該完成資料,該函式引動器230可以提供命令至該控制器220。該命令可以包含與該非同步操作(例如,Get與getUserUrl)有關的資料。該控制器220接著可以排程對該等非同步元件205-207之一建立一請求的任務,以進行該非同步操作。可在該歷史記錄儲存器211中建立一記錄,指示該任務已經開始。
當從該非同步元件接收一回應時,該事件處理器215可以在該歷史記錄211中儲存與該回應相應的完成資料,並可以更新該歷史記錄,以指示已經完成該任務。該事件處理器215也可以通知該函式引動器230已經接收一回應,因此該函式引動器230可以重新執行該程式碼。
當重新執行該程式碼時,可能再次遇到該指令
「return context.httpSendWithPromise」。當遇到該指令時,可以再次使該函式引動器230被呼叫。為了回應,該函式引動器230可以再次搜雲該歷史記錄儲存器211一回應。這次,該函式引動器230找到先前由該事件處理器215所儲存的該完成資料。該函式引動器230接著可以提供該完成資料至該執行中程式碼,接著可以完成該非同步操作。接著可以執行該該等指令「then(function(getUserResponse)」的功能。
在執行這些指令的時候,可以執行該指令「return context.httpSendWithPromise」。當執行此指令時,該執行中程式碼可以傳遞資訊至該函式引動器230。該函式引動器230可以再次搜尋該歷史記錄儲存器211相應於該非同步操作的完成資料。在發現無法於該歷史記錄儲存器211中獲得該非同步操作的該完成資料時,該函式引動器230可以傳送一命令至該控制器220。為了回應,該控制器220可以排程對一適宜非同步元件建立一非同步請求的任務。
當該函式引動器230決定目前在該歷史記錄儲存器211無法獲得一非同步操作的完成資料時,該函式引動器230可以在該非同步操作之後執行該程式碼(如果該非同步操作為非阻塞(non-blocking)),或暫停執行該程式,並從該記憶體移除該程式,而不儲存與該程式有關的任何額外狀態。如先前所指出,如果存在以下兩種情況任一項時,該函式引動器230可以暫停一程式的執行:1.已經到達該程式碼的結束處;或是2.不存在對一非同步操作的回應,並且該非同步操
作阻塞中(blocking)。
在一實例中,如果在該歷史記錄中沒有更多的完成事件,該函式引動器230可以決定目前無法獲得對該非同步操作的回應。
當接收對該第二非同步請求的回應時,該事件處理器215可以利用該完成資料更新該歷史記錄儲存器211,該完成資料包含所接收的回應,該事件處理器215也可以通知該函式引動器230已經接收與先前執行之該程式碼有關的回應。為了回應,該函式引動器230可以再次從該程式碼的開始處重新執行該程式碼。當從該執行中程式碼執行每一非同步操作時,該函式引動器230可以搜尋該歷史記錄儲存器211,找尋該完成資料(如果該完成資料係為可得的),並提供該完成資料至該執行中程式碼,以接著繼續執行該程式碼。
在此情況中,隨著在該歷史記錄儲存器211中找到對於兩者非同步請求的完成資料,該程式碼便可以執行至完成。一旦完成之後,可以登記一記錄,指示該程式碼已經完成。該記錄可以包含由該執行中程式碼所回傳的任何結果。
以下為某些其他示例記錄,其為在一具體實施例中也可儲存的記錄。這些記錄可儲存於該歷史記錄儲存器211、
一(未圖示)任務儲存器或某些其他儲存器中。
在另一具體實施例中,這些其他的示例記錄並不保存於一儲存器中。
第3圖至第6圖為流程圖式,其概要表現根據在此敘述之標的的多數態樣而可進行的多數示例動作。為了簡化說明,連結第3圖至第6圖所敘述之該方法係以一連串動作的方式描繪及敘述。要瞭解及理解的是,在此敘述之標的的多數態樣並不限制為所描述之該等動作及/或受該等動作的次序所限制。在一具體實施例中,該等動作係如以下敘述的次序進行。然而,在其他具體實施例中,該等動作可以平行,或以其他次序及/或與其他不於此處呈現與敘述的動作一起進行。此外,並非所有描述的動作都需要用於實作根據在此敘述之標的的多數態樣之該方法。此外,該領域技術人員將瞭解及理解,該方法可透過狀態圖或作為事件的方式,替代表示為一連串相互關聯的狀態。
第3圖與第4圖為流程圖式,其概要表現根據在此敘述之標的的多數態樣而可進行的多數示例動作,用於獲得來自一程式之多數非同步操作與對該等非同步操作之多數回應。該等動作開始於區塊300。
在區塊305,開始程式執行。例如,參考第2圖,由該功能引動器230開始儲存在該程式碼儲存器210上的程式(例如,以上敘述之程式)。
在區塊315,檢查一歷史記錄以決定是否已經接收對該非同步操作的回應。例如,參考第2圖,該函式引動器230檢查該歷史記錄儲存器211,以決定是否已經接收該請求之一回應。檢查該歷史記錄可以包含搜尋與該回應關聯之一識別符之該歷史記錄。當找到該識別符時,可以從該歷史記錄撷取與該識別符關聯之資料,並同步提供至該執行中程式,即使該資料對於該程式第一次遇到該非同步操作而言係以非同步方式接收。
在區塊320,如果尚未接收一回應,該等動作於區塊322繼續;否則該等動作於區塊325繼續。
在區塊322,對於是否已經為該遇到的操作進行一任務排程進行檢查。如果已經排程,該等動作於區塊330繼續;否則該等動作於區塊323繼續。例如,在重新執行一程式時,可能遇到一非同步操作,其任務已被排程,但尚未接收到任何回應。
在區塊323,一任務經排程以建立一非同步請求。例如,參考第2圖,該控制器220可以排程一任務,以呼叫該等非同步元件205-206之一,以回應在由該函式引動器230所執行之程式中所遇到的一非同步操作。
在區塊325,從該歷史記錄獲得完成資料並提供至該程式。例如,參考第2圖,該函式引動器230從該歷史記錄儲存器211獲得該完成資料,並提供該完成資料至該執行中程式。
在區塊330,如果在執行該程式期間遇到另一非同步請求,那麼該等動作於區塊315繼續;否則該等動作於區塊335繼續。
在區塊335,進行是否有任何(多數)擱置非同步任務的決定。如果有,該等動作於第4圖的區塊410繼續;否則該等動作於第3圖的區塊340繼續。
在區塊340,回傳來自該程式之結果(例如,該回傳程式碼或資料)。例如,參考第2圖,該函式引動器230透過一顯示器回傳執行該程式碼的結果給該使用者225。
在區塊340,可以執行任何存在的多數其他動作。
回到第4圖,在一具體實施例中,在區塊410,如果符合之前敘述的條件,便可從記憶體移除該程式。例如,參考第2圖,該函式引動器230可以從記憶體移除該執行中程式。所述移除動作可以包含將該記憶體標記為空閒記憶體、指示另一元件清除該程式,或是指示該程式可被終止且可為多數其他目的重新使用該記憶體的任何其他活動。在一具體實施例中,除非決定需要更多的資源,否則可以只標記該程式為準備刪除,而非移除該程式。
在區塊415,執行來自該任務清單之一或多個任務。例如,參考第2圖,該控制器220(或另一元件)執行先前被
放置於該歷史記錄儲存器211中的任務,並傳送一請求至該等非同步元件205-207之一。
在區塊420,執行等待回應。所述等待可能牽涉到不作動作或是與其他與該回應有關或無關的動作接合。例如,所述等待可能牽涉到增殖一執行緒進行等待回應,同時也執行與該回應無關的多數其他執行緒。例如,參考第2圖,該函式引動器230可以執行其他程式碼,而該等其他元件可以在等待一回應的同時,與多數其他活動接合。
在區塊425,當接收該回應時,將該回應放置於一歷史記錄中。例如,參考第2圖,該事件處理器215可以放置從該適當的非同步元件所接收與該回應相應的完成資料於該歷史記錄儲存器211之中。所述將該資料放置於該歷史記錄中可能牽涉到將相應於該回應之該完成資料與一識別符一起儲存,該識別符則將該完成資料與該非同步操作及/或執行該非同步操作之程式建立關聯。
在區塊430,提供已經接收一回應之通知。例如,參考第2圖,該事件處理器215可以通知該函式引動器230已經接收一回應,並可以指示該程式已經接收何者回應。
在區塊430之後,該等動作於第3圖的區塊305繼續。
第5圖為一流程圖式,其概要表現根據在此敘述之標的的多數態樣而可進行的多數示例動作,用以將程式碼提供至一執行環境。該等動作開始於區塊505。
在區塊510,提供一程式的程式碼至一執行環境。
例如,參考第2圖,該使用者225、一電腦程序或其他類似來源,可以提供該待執行之程式的存在性指示至該函式引動器230。該指示可以指示識別該程式之名稱、位置或其他資訊。例如,該指示可以識別儲存於該程式碼儲存器210中的程式碼。
在區塊515,在已經執行並重新執行該程式的程式碼,直到已經由該歷史記錄滿足該程式之所有非同步操作之後,接收與該程式執行有關的多數結果。例如,參考第2圖,該使用者225、一電腦程序或其他類似元件可以接收該程式執行之該等結果的指示。可以在該程式能夠從頭到尾成功執行,並具有其所有非同步請求的回應之後,接收此結果。
在區塊520,可以執行任何存在的多數其他動作。
第6圖為一流程圖式,其概要表現根據在此敘述之標的的多數態樣而可為一函式引動器進行的多數示例動作。該等動作開始於區塊600。
在區塊605,開始該函式引動器。例如,參考第2圖,可以在由該事件處理器215接收一程式的新事件之後,由該事件處理器215開始該函式引動器230。作為另一實例,該函式引動器230可由該使用者225或一(未圖示)程序開始。
在區塊610,在該函式引動器已經開始之後,該函式引動器可以獲得該歷史記錄中一事件。例如,參考第2圖,該函式引動器230可以獲得該歷史記錄儲存器211中該第一事件。
在區塊615,該函式引動器可以處理該事件。例如,如果該事件係為與一程式所指示一非同步操作相應的完成事件,該函式引動器可以提供該完成事件之完成資料至該程式。
在區塊620,該函式引動器決定該歷史記錄中是否有另一事件,該等動作於區塊610繼續;否則該等動作於區塊625繼續。例如,參考第2圖,如果該歷史記錄儲存器211包含許多事件,該函式引動器230可以決定是否存在另一尚未由該函式引動器230所處理的事件。如果是,該等動作於區塊610繼續;否則該等動作於區塊625繼續。
在區塊625,可以執行任何存在的多數其他動作。
如同可從前述詳細敘述所見,已經敘述與耐用性程式執行有關的多數態樣。雖然在此敘述之該標的的多數態樣係允許各種修改或替代建構,但其僅在該等圖式中顯示某些描述具體實施例並於以上詳細敘述。然而,應該瞭解並不預期將所主張標的之多數態樣限制為在此揭示之特定形式,倒不如說,本發明係涵蓋在此敘述之該標的各種態樣之精神與範圍之中的所有修改、替代建構與等價物。
300‧‧‧區塊步驟
305‧‧‧區塊步驟
310‧‧‧區塊步驟
315‧‧‧區塊步驟
320‧‧‧區塊步驟
322‧‧‧區塊步驟
323‧‧‧區塊步驟
325‧‧‧區塊步驟
330‧‧‧區塊步驟
335‧‧‧區塊步驟
340‧‧‧區塊步驟
345‧‧‧區塊步驟
Claims (17)
- 一種用於耐用性程式執行的方法,該方法至少部分由一電腦實作,該方法包括以下步驟:開始一程式的執行;執行該程式的程式碼,該程式碼指示一第一非同步操作,該第一非同步操作獨立於該程式而完成;檢查一歷史記錄,以決定該歷史記錄是否指示已經接收對於該第一非同步操作的回應;如果已經接收該回應,則從該歷史記錄獲得完成資料,並提供該完成資料至該程式;如果尚未接收該回應,則排程對一非同步元件建立一請求的任務,而如果該第一非同步操作阻塞中,從該記憶體移除該程式;執行對該非同步元件建立該請求的任務;在一稍後時間,接收來自該非同步元件對該請求的回應;及將相應於來自該非同步元件的該回應的該完成資料與一識別符一起儲存在該歷史記錄中,該識別符將該完成資料與該非同步操作建立聯繫。
- 如請求項1所述之方法,進一步包括以下步驟:如果尚未接收該回應,則執行包含以下的動作:等待待被接收的該回應; 當接收該回應時,將相應於該回應之該完成資料放置於該歷史記錄中;載入該程式至該記憶體之中;重新執行該程式;重新執行該程式的程式碼,該程式碼再次指示該第一非同步操作;提供該完成資料至該程式。
- 如請求項2所述之方法,該等動作進一步包括額外動作,該等額外動作包括以下步驟:執行該程式的額外程式碼,該額外程式碼指示另一非同步操作;檢查該歷史記錄,以決定是否已經接收該另一非同步操作之另一回應;如果已經接收該另一回應,則從該歷史記錄獲得該另一回應,並提供該另一回應至該程式;及如果尚未接收該另一回應,則排程對一非同步元件建立一請求的另一任務,而如果該另一非同步操作阻塞中,則從該記憶體移除該程式。
- 如請求項3所述之方法,進一步包括以下步驟:重複該等額外動作,直到由該程式所建立之所有非同步請求,係由該歷史記錄中儲存的相應完成資料所滿足為止。
- 如請求項1所述之方法,進一步包括以下步驟:與開始一程式的執行連結,於該歷史記錄中放置該程式已經開始執行的一指示。
- 如請求項1所述之方法,進一步包括以下步驟:當該程式的程式碼正重新執行時,搜尋該歷史記錄以找出與該完成資料關聯之該識別符;當找出該識別符時,從該歷史記錄擷取該完成資料;同步提供該完成資料至該程式;繼續執行該程式,直到該程式指示由該程式所指示之另一非同步操作或所有非同步操作係由來自該歷史記錄的完成資料所滿足為止。
- 一種在一計算環境中用於耐用性程式執行的系統,包括:一儲存器,該儲存器具有電腦儲存元件,該等電腦儲存元件其中具有儲存的程式碼,當該程式碼被執行時,指示一或多個非同步操作;一控制器,該控制器經設計以排程一任務,用以傳送相應於一非同步操作的請求至一非同步元件,該非同步元件係為可操作以回應該請求;一函式引動器,該函式引動器經設計以執行及重新執行該程式碼,並回應由該程式碼所指示之非同步操作供應完成資料,直到由該程式碼所指示之所有非同步操作都由一歷史記錄中所包含的完成資料所滿足為止,該歷史記錄則由來自 一或多個非同步元件所接收之回應所填入,該一或多個非同步元件則為已經相應於由該程式碼所指示之非同步操作而傳送請求的非同步元件;及一事件處理器,該事件處理器經結構設計以利用來自該一或多個非同步元件之該等回應所推衍的該完成資料以更新該歷史記錄,其中針對各回應的該完成資料關聯於一識別符,該識別符將該回應與該等非同步操作中的一者建立聯繫。
- 如請求項7所述之系統,其中該函式引動器係進一步經設計以在該程式碼已經執行之後,以及該程式碼已經接收對於由該程式碼所建立之所有非同步請求的回應之前,從記憶體移除該程式碼。
- 如請求項8所述之系統,其中該事件處理器經進一步結構設計以通知該函式引動器已經為該程式碼接收新的完成資料。
- 如請求項9所述之系統,其中該函式引動器係進一步經結構設計以回應該事件處理器通知該函式引動器已經為該程式碼接收新的完成資料,而載入並重新執行該程式碼。
- 如請求項10所述之系統,其中該函式引動器係進一步經結構設計以從該歷史記錄供應完成資料至由該程式碼所執行之非同步操作。
- 如請求項7所述之系統,其中該控制器係進一步經結構設計以回應來自該函式引動器所接收之命令,排程對該非同步元件建立一請求的任務,該命令知會該控制器該程式碼係指示一非同步操作。
- 如請求項7所述之系統,進一步包括一歷史記錄儲存器,該歷史記錄儲存器具有電腦儲存元件,用以儲存有關開始與完成任務的資訊,該等任務則與對該一或多個非同步元件所建立之請求有關,以及儲存相應於來自該一或多個非同步元件所接收之回應的完成資料。
- 一種用於耐用性程式執行的電腦儲存媒體,該電腦儲存媒體具有電腦可執行指令,該等電腦可執行指令在由執行動作執行可包含:提供一程式之程式碼至一或多個元件,該一或多個元件經結構設計以執行額外動作,該等額外動作包括以下步驟:開始一程式的執行;執行該程式之一指令,該指令指示一第一非同步操作,檢查一歷史記錄,以決定該歷史記錄是否指示已經接收對於該第一非同步操作的一回應;如果已經接收該回應,則從該歷史記錄獲得完成資料,並提供該完成資料至該程式,如果尚未接收該回應,則 排程對一非同步元件建立一請求的任務,而如果該第一非同步操作阻塞中,從該記憶體移除該程式;執行對該非同步元件建立該請求的任務;在一稍後時間,接收來自該非同步元件對該請求的回應;及在該歷史記錄中,與一識別符一起儲存相應於來自該非同步元件的回應之完成資料,該識別符將該完成資料與該非同步操作建立聯繫;及在已經執行並重新執行該程式的程式碼,直到已經由該歷史記錄滿足該程式之所有非同步操作之後,接收指示該程式已經完成之一指示。
- 如請求項14所述之電腦儲存媒體,其中該等額外動作進一步包括以下步驟:如果尚未接收該回應,則等待待被接收之該回應;當接收該回應時,將相應於該回應之該完成資料放置於該歷史記錄中;回應於接收該回應,載入該程式至該記憶體之中;開始重新執行該程式;重新執行該程式的該指令,該指令再次指示該第一非同步操作;提供該完成資料至該程式。
- 如請求項14之電腦儲存媒體,其中該等額外動作進一步包括以下步驟:當該程式的該指令正重新執行時,搜尋該歷史記錄以找出與該回應關聯之該識別符;當找出該識別符時,從該歷史記錄擷取該完成資料;回應於由該程式指示之該非同步操作,同步提供該完成資料至該程式;及繼續執行該程式,直到該程式指示由該程式所指示之另一非同步操作或所有非同步操作係由來自該歷史記錄的完成資料所滿足為止。
- 如請求項14之電腦儲存媒體,其中該指示包括自回應所推衍的結果。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/798,152 US9846597B2 (en) | 2013-03-13 | 2013-03-13 | Durable program execution |
| US13/798,152 | 2013-03-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201447768A TW201447768A (zh) | 2014-12-16 |
| TWI610241B true TWI610241B (zh) | 2018-01-01 |
Family
ID=50390220
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW103107030A TWI610241B (zh) | 2013-03-13 | 2014-03-03 | 耐用性程式執行 |
Country Status (5)
| Country | Link |
|---|---|
| US (3) | US9846597B2 (zh) |
| EP (1) | EP2972848B1 (zh) |
| CN (1) | CN105144103B (zh) |
| TW (1) | TWI610241B (zh) |
| WO (1) | WO2014158833A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110179303A1 (en) * | 2010-01-15 | 2011-07-21 | Microsoft Corporation | Persistent application activation and timer notifications |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040030882A1 (en) * | 2002-08-08 | 2004-02-12 | Forman George Henry | Managed application pre-launching |
| US20080313645A1 (en) * | 2007-06-15 | 2008-12-18 | Microsoft Corporation | Automatic Mutual Exclusion |
| US20090293073A1 (en) * | 2008-05-20 | 2009-11-26 | Microsoft Corporation | Automating asynchronous programming in single threaded systems |
| US20100205613A1 (en) * | 2009-02-09 | 2010-08-12 | International Business Machines Corporation | Method, Apparatus, and System for Applying Timed Operations to Non-Timed Functions |
| TW201120754A (en) * | 2009-08-31 | 2011-06-16 | Ibm | Multi-core/thread work-group computation scheduler |
| TWI344603B (en) * | 2003-10-23 | 2011-07-01 | Microsoft Corp | System and method for a unified composition engine in a graphics processing system |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6253252B1 (en) * | 1996-07-11 | 2001-06-26 | Andrew Schofield | Method and apparatus for asynchronously calling and implementing objects |
| US6219711B1 (en) * | 1997-05-13 | 2001-04-17 | Micron Electronics, Inc. | Synchronous communication interface |
| US6868541B1 (en) * | 1998-12-21 | 2005-03-15 | Microsoft Corporation | Asynchronous programming environment |
| US7051330B1 (en) * | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
| WO2002098075A1 (en) * | 2001-05-25 | 2002-12-05 | Mitsubishi Denki Kabushiki Kaisha | Internet communication system, internet communication method, session control server, communication adapter, communication relay server and program |
| US7280558B1 (en) * | 2001-06-28 | 2007-10-09 | Microsoft Corporation | Asynchronous pattern |
| US6934953B2 (en) * | 2001-11-28 | 2005-08-23 | Intel Corporation | Deferred procedure call in interface description language |
| WO2004012086A1 (ja) * | 2002-07-29 | 2004-02-05 | Mitsubishi Denki Kabushiki Kaisha | インターネット通信システム及びインターネット通信方法及びセッション管理サーバ及び無線通信装置及び通信中継サーバ及びプログラム |
| US8516498B2 (en) * | 2003-10-31 | 2013-08-20 | Microsoft Corporation | Handling a delivery failure as a program exception in a distributed asynchronous architecture |
| ATE468556T1 (de) * | 2006-04-13 | 2010-06-15 | Microsoft Corp | Virtuelles ausführungssystem für ressourcen- beschränkte geräte |
| US7958497B1 (en) * | 2006-06-07 | 2011-06-07 | Replay Solutions, Inc. | State synchronization in recording and replaying computer programs |
| US8079019B2 (en) * | 2007-11-21 | 2011-12-13 | Replay Solutions, Inc. | Advancing and rewinding a replayed program execution |
| US8468526B2 (en) * | 2006-06-30 | 2013-06-18 | Intel Corporation | Concurrent thread execution using user-level asynchronous signaling |
| US7941707B2 (en) * | 2007-10-19 | 2011-05-10 | Oracle International Corporation | Gathering information for use in diagnostic data dumping upon failure occurrence |
| US8335982B1 (en) * | 2007-12-05 | 2012-12-18 | Appcelerator, Inc. | System and method for binding a document object model through JavaScript callbacks |
| JP5744717B2 (ja) * | 2008-04-04 | 2015-07-08 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | ディレクトリへのアクセスのための方法及びデバイス |
| US8584004B2 (en) * | 2008-04-23 | 2013-11-12 | Microsoft Corporation | Asynchronous user defined functions |
| EP2304567A2 (en) * | 2008-05-20 | 2011-04-06 | Raytheon Company | Method and apparatus for providing a synchronous interface for an asynchronous service |
| US20100168912A1 (en) * | 2008-12-29 | 2010-07-01 | Electronics And Telecommunications Research Institute | Method of invoking asynchronous function for controlling robots |
| US8402318B2 (en) | 2009-03-24 | 2013-03-19 | The Trustees Of Columbia University In The City Of New York | Systems and methods for recording and replaying application execution |
| US8701096B2 (en) * | 2009-10-15 | 2014-04-15 | Adobe Systems Incorporated | In-order execution in an asynchronous programming environment |
| US20110179303A1 (en) * | 2010-01-15 | 2011-07-21 | Microsoft Corporation | Persistent application activation and timer notifications |
| US8392922B2 (en) * | 2010-03-08 | 2013-03-05 | Microsoft Corporation | Marshaling results of nested tasks |
| US9411568B2 (en) * | 2010-04-15 | 2016-08-09 | Microsoft Technology Licensing, Llc | Asynchronous workflows |
| US8607206B2 (en) * | 2010-09-24 | 2013-12-10 | Group Business Software Ag | Automatic synchronous-to-asynchronous software application converter |
| KR101782995B1 (ko) | 2011-01-13 | 2017-09-29 | 삼성전자주식회사 | 자바스크립트 코드 저장 및 최적화를 통한 웹 브라우징 방법 및 장치 |
| US8433833B2 (en) * | 2011-03-30 | 2013-04-30 | Intel Corporation | Dynamic reassignment for I/O transfers using a completion queue |
| US8893090B2 (en) * | 2011-04-15 | 2014-11-18 | Microsoft Corporation | Stepping out of an asynchronous method into its continuation in a debugger |
| US20120284720A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines Corporation | Hardware assisted scheduling in computer system |
| US8806433B2 (en) * | 2011-10-27 | 2014-08-12 | Reputation.com | Method and framework for software development |
| US8756604B2 (en) * | 2011-12-13 | 2014-06-17 | Microsoft Corporation | Async wrapper handling execution of asynchronous operations for synchronous and asynchronous routines |
| US9152549B1 (en) * | 2012-03-30 | 2015-10-06 | Google Inc. | Dynamically allocating memory for processes |
| CN103365707B (zh) * | 2012-03-30 | 2016-08-03 | 国际商业机器公司 | 控制异步调用的返回的方法和装置 |
| US9317322B2 (en) * | 2012-10-24 | 2016-04-19 | Google Technology Holdings LLC | Simulating synchronous execution of asynchronous operations |
| US20140282625A1 (en) * | 2013-03-13 | 2014-09-18 | Pablo Chico de Guzman Huerta | Asynchronous programming model for concurrent workflow scenarios |
| US9098359B2 (en) * | 2013-10-10 | 2015-08-04 | Microsoft Technology Licensing, Llc | Durable execution of long running applications |
-
2013
- 2013-03-13 US US13/798,152 patent/US9846597B2/en active Active
-
2014
- 2014-03-03 TW TW103107030A patent/TWI610241B/zh not_active IP Right Cessation
- 2014-03-05 EP EP14713662.6A patent/EP2972848B1/en active Active
- 2014-03-05 WO PCT/US2014/020453 patent/WO2014158833A1/en not_active Ceased
- 2014-03-05 CN CN201480014744.7A patent/CN105144103B/zh active Active
-
2017
- 2017-11-16 US US15/814,861 patent/US10303513B2/en active Active
-
2019
- 2019-05-08 US US16/406,361 patent/US11036551B2/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040030882A1 (en) * | 2002-08-08 | 2004-02-12 | Forman George Henry | Managed application pre-launching |
| TWI344603B (en) * | 2003-10-23 | 2011-07-01 | Microsoft Corp | System and method for a unified composition engine in a graphics processing system |
| US20080313645A1 (en) * | 2007-06-15 | 2008-12-18 | Microsoft Corporation | Automatic Mutual Exclusion |
| US20090293073A1 (en) * | 2008-05-20 | 2009-11-26 | Microsoft Corporation | Automating asynchronous programming in single threaded systems |
| US20100205613A1 (en) * | 2009-02-09 | 2010-08-12 | International Business Machines Corporation | Method, Apparatus, and System for Applying Timed Operations to Non-Timed Functions |
| TW201120754A (en) * | 2009-08-31 | 2011-06-16 | Ibm | Multi-core/thread work-group computation scheduler |
Also Published As
| Publication number | Publication date |
|---|---|
| US10303513B2 (en) | 2019-05-28 |
| US11036551B2 (en) | 2021-06-15 |
| US20140282577A1 (en) | 2014-09-18 |
| WO2014158833A1 (en) | 2014-10-02 |
| CN105144103A (zh) | 2015-12-09 |
| US9846597B2 (en) | 2017-12-19 |
| TW201447768A (zh) | 2014-12-16 |
| CN105144103B (zh) | 2019-02-26 |
| US20180081721A1 (en) | 2018-03-22 |
| US20190347131A1 (en) | 2019-11-14 |
| EP2972848B1 (en) | 2017-11-08 |
| EP2972848A1 (en) | 2016-01-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11816470B2 (en) | Impact driven continuous deployment system | |
| US10437578B2 (en) | Orchestration of software applications upgrade using automatic hang detection | |
| EP3788471B1 (en) | Pending merge conflict notification | |
| US20120117457A1 (en) | Version history inside document | |
| US12282781B2 (en) | Cluster bootstrapping for distributed computing systems | |
| US20140365833A1 (en) | Capturing trace information using annotated trace output | |
| CN110659256A (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
| CN104834599A (zh) | Web安全检测方法和装置 | |
| CN101211362A (zh) | 用于数据库更新管理的系统和方法 | |
| US20120059997A1 (en) | Apparatus and method for detecting data race | |
| US20250258804A1 (en) | Techniques For Safe Database Migration With No Downtime | |
| TWI610241B (zh) | 耐用性程式執行 | |
| US20110224939A1 (en) | Integrated tool for persisting development environment test scenario information | |
| WO2017148376A1 (zh) | 应用程序用户界面自动化测试方法、电子设备、系统及存储介质 | |
| CN107018005A (zh) | 事件触发方法、事件管理系统及系统 | |
| US20130246700A1 (en) | Device type override | |
| US20180357104A1 (en) | Load balancing and job scheduling manager within a high-performance computing environment | |
| US12277091B2 (en) | Document based monitoring | |
| US20250078090A1 (en) | Omni-channel context sharing | |
| US20230111874A1 (en) | Device emulations in a notebook session | |
| CN108345789B (zh) | 记录访存操作信息的方法及装置 | |
| CN121053584A (zh) | 视频数据的处理方法、装置、电子设备和介质 | |
| CN121277658A (zh) | 动效执行方法和装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |