TWI446262B - 在常式內切換執行緒之技術 - Google Patents

在常式內切換執行緒之技術 Download PDF

Info

Publication number
TWI446262B
TWI446262B TW097137253A TW97137253A TWI446262B TW I446262 B TWI446262 B TW I446262B TW 097137253 A TW097137253 A TW 097137253A TW 97137253 A TW97137253 A TW 97137253A TW I446262 B TWI446262 B TW I446262B
Authority
TW
Taiwan
Prior art keywords
thread
routine
continuation
return
logic
Prior art date
Application number
TW097137253A
Other languages
English (en)
Chinese (zh)
Other versions
TW200921509A (en
Inventor
Krzysztof Cwalina
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Publication of TW200921509A publication Critical patent/TW200921509A/zh
Application granted granted Critical
Publication of TWI446262B publication Critical patent/TWI446262B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

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)
  • User Interface Of Digital Computer (AREA)
  • Executing Machine-Instructions (AREA)
TW097137253A 2007-10-25 2008-09-26 在常式內切換執行緒之技術 TWI446262B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/977,593 US8589925B2 (en) 2007-10-25 2007-10-25 Techniques for switching threads within routines

Publications (2)

Publication Number Publication Date
TW200921509A TW200921509A (en) 2009-05-16
TWI446262B true TWI446262B (zh) 2014-07-21

Family

ID=40580367

Family Applications (2)

Application Number Title Priority Date Filing Date
TW097137253A TWI446262B (zh) 2007-10-25 2008-09-26 在常式內切換執行緒之技術
TW103108713A TWI515655B (zh) 2007-10-25 2008-09-26 在常式內切換執行緒之方法、系統及電腦可讀取記憶體

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW103108713A TWI515655B (zh) 2007-10-25 2008-09-26 在常式內切換執行緒之方法、系統及電腦可讀取記憶體

Country Status (5)

Country Link
US (3) US8589925B2 (enExample)
EP (1) EP2217998B1 (enExample)
JP (1) JP5315354B2 (enExample)
TW (2) TWI446262B (enExample)
WO (1) WO2009055494A2 (enExample)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589925B2 (en) 2007-10-25 2013-11-19 Microsoft Corporation Techniques for switching threads within routines
US8732211B2 (en) 2011-01-28 2014-05-20 International Business Machines Corporation Method, computer system, and physical computer storage medium for organizing data into data structures
JP6469083B2 (ja) * 2013-04-23 2019-02-13 アビニシオ テクノロジー エルエルシー コンピューティングシステムによって実行されるタスクの制御
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
EP3189428B1 (en) 2014-09-02 2022-08-03 AB Initio Technology LLC Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections
JP6778193B2 (ja) * 2014-09-02 2020-10-28 アビニシオ テクノロジー エルエルシー データ処理タスクの制御
US9760406B2 (en) 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
CA2959527C (en) 2014-09-02 2021-01-05 Ab Initio Technology Llc Managing state for controlling tasks
US9552223B2 (en) * 2014-09-30 2017-01-24 International Business Machines Corporation Post-return asynchronous code execution
CN105447138A (zh) * 2015-11-20 2016-03-30 北京京东尚科信息技术有限公司 用于服务器的方法及系统
US10761714B2 (en) * 2015-11-23 2020-09-01 Google Llc Recognizing gestures and updating display by coordinator
CN108089919B (zh) * 2017-12-21 2021-01-15 北京云杉世纪网络科技有限公司 一种并发处理api请求的方法及系统
US11789741B2 (en) * 2018-03-08 2023-10-17 Sap Se Determining an optimum quantity of interleaved instruction streams of defined coroutines
CN109257411B (zh) * 2018-07-31 2021-12-24 平安科技(深圳)有限公司 一种业务处理方法、调用管理系统和计算机设备
CN110247984B (zh) * 2019-06-27 2022-02-22 腾讯科技(深圳)有限公司 业务处理方法、装置及存储介质
CN112799819A (zh) * 2021-02-04 2021-05-14 深圳市大富网络技术有限公司 一种程序运行的控制方法、装置及计算机存储介质
US12288085B2 (en) * 2021-05-19 2025-04-29 Mobileye Vision Technologies Ltd. On the fly configuration of a processing circuit
CN113608843B (zh) * 2021-07-08 2023-08-25 广东开放大学(广东理工职业学院) 协程实现方法和系统
CN114584500B (zh) * 2022-02-25 2024-03-22 网易(杭州)网络有限公司 异步通信的测试方法、装置及电子设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0426323B1 (en) * 1989-10-31 1996-01-10 Hewlett-Packard Company Portable, resource sharing file server using co-routines
JPH03173938A (ja) 1989-11-30 1991-07-29 Pioneer Electron Corp トラッキングサーボ装置
JP2535631B2 (ja) * 1989-12-01 1996-09-18 富士通株式会社 コル―チン呼び出し制御方式
US5261097A (en) * 1991-03-11 1993-11-09 Digital Equipment Corporation Computer system and method for executing command scripts using multiple synchronized threads
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6449614B1 (en) 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US7043725B1 (en) * 1999-07-09 2006-05-09 Hewlett-Packard Development Company, L.P. Two tier arrangement for threads support in a virtual machine
AU7606301A (en) 2000-09-29 2002-04-11 International Business Machines Corporation Context based view design to support client side multi-threading
US6954933B2 (en) * 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for providing and integrating high-performance message queues in a user interface environment
US6904597B2 (en) 2001-03-30 2005-06-07 Intel Corporation Inter-thread communications between different components using double buffer
US7007244B2 (en) 2001-04-20 2006-02-28 Microsoft Corporation Method and system for displaying categorized information on a user interface
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
US7159215B2 (en) * 2001-06-27 2007-01-02 Sun Microsystems, Inc. Termination detection for shared-memory parallel programs
US20030041139A1 (en) 2001-08-14 2003-02-27 Smartpipes, Incorporated Event management for a remote network policy management system
US7086049B2 (en) * 2002-02-26 2006-08-01 International Business Machines Corporation Background code update for embedded systems
US7587721B2 (en) * 2004-05-20 2009-09-08 Sap Ag Sharing objects in runtime systems
JP4520788B2 (ja) * 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US20060048106A1 (en) * 2004-08-27 2006-03-02 International Business Machines Corporation Link-time profile-based method for reducing run-time image of executables
US8568225B2 (en) 2004-09-16 2013-10-29 Bally Gaming, Inc. User interface system and method for creating and verifying signed content
US7685574B2 (en) * 2004-09-29 2010-03-23 Microsoft Corporation Constrained execution regions
US7603673B2 (en) * 2004-10-28 2009-10-13 Intel Corporation Method and system for reducing context switch times
US7610579B2 (en) * 2004-12-10 2009-10-27 Microsoft Corporation Critical finalizers
US7467272B2 (en) * 2004-12-16 2008-12-16 International Business Machines Corporation Write protection of subroutine return addresses
US7784051B2 (en) * 2005-11-18 2010-08-24 Sap Ag Cooperative scheduling using coroutines and threads
US20080168247A1 (en) * 2007-01-05 2008-07-10 Seagate Technology Llc Method and apparatus for controlling access to a data storage device
US8589925B2 (en) 2007-10-25 2013-11-19 Microsoft Corporation Techniques for switching threads within routines

Also Published As

Publication number Publication date
TWI515655B (zh) 2016-01-01
US10007551B2 (en) 2018-06-26
US8589925B2 (en) 2013-11-19
WO2009055494A2 (en) 2009-04-30
US20190138347A1 (en) 2019-05-09
US20090113436A1 (en) 2009-04-30
JP5315354B2 (ja) 2013-10-16
US10698726B2 (en) 2020-06-30
EP2217998B1 (en) 2017-02-22
EP2217998A4 (en) 2014-07-23
TW200921509A (en) 2009-05-16
TW201426546A (zh) 2014-07-01
US20140047446A1 (en) 2014-02-13
JP2011501323A (ja) 2011-01-06
EP2217998A2 (en) 2010-08-18
WO2009055494A3 (en) 2009-07-02

Similar Documents

Publication Publication Date Title
TWI446262B (zh) 在常式內切換執行緒之技術
US8423969B2 (en) Inheritance breakpoints for use in debugging object-oriented computer programs
US8418148B2 (en) Thread execution analyzer
US8849753B2 (en) Automating asynchronous programming in single threaded systems
US20110154300A1 (en) Debugging From A Call Graph
US8135572B2 (en) Integrated debugger simulator
US8429613B2 (en) Stepping and application state viewing between points
CN106681897A (zh) 一种代码调试方法及装置
US8650551B2 (en) Transactional debugger for a transactional memory system and detecting conflicts
CN111459547B (zh) 一种函数调用链路的展示方法和装置
CN110837467A (zh) 软件测试方法、装置以及系统
CN111639018A (zh) 一种内存泄漏检测方法和装置
CN111813693B (zh) 一种软件兼容性检测方法、智能终端及存储介质
JPH08212106A (ja) システム試験支援装置及びシステム試験支援方法
CN118152277B (zh) 一种Bootloader刷写方法、装置、设备及介质
US20060064671A1 (en) Creating and using a building block
CN107665115B (zh) 一种软件开发平台及方法
US11934294B2 (en) Generating and debugging bytecode for a rule
CN112506592B (zh) 页面加载时长的确定方法、装置、设备和存储介质
JP2000293400A (ja) メモリリーク検出システム、メモリリーク検出方法及び記録媒体
US9244814B1 (en) Enriched log viewer
US20250068551A1 (en) Configurable identification mechanism of debug parameters in multi-process or multi-threaded debugging
JP2001134464A (ja) 情報処理方法および装置
CN120849259A (zh) 应用测试方法、装置、电子设备和计算机可读存储介质
CN119883897A (zh) 一种界面测试方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees