上下文 (計算機)

在計算機科學中,任務(task)的上下文(英語:context)是一個任務所必不可少的一組數據(該任務可以是進程線程)。這些數據允許任務中斷,在這之後仍可在同一個地方繼續執行。上下文的這一概念在中斷的任務的場景下具有重大意義,其中,任務在被中斷之後,處理器保存上下文並提供中斷處理(interrupt service routine)。因此,上下文越小,延遲越小。

上下文的數據可能存放於處理器寄存器、任務所利用的內存、某些操作系統管理的任務所使用的控制寄存器(control registers)。

context在其他語言的定義

Java

tomcat的javax.servlet.ServletContext接口的官方文檔如此描述,ServletContext定義了servlet與servlet容器通訊所需要的一組方法[1]

Python

Python的一個經典語法——with語句上下文管理器。如下例:

with EXPRESSION as TARGET:
    SUITE

Python 3的官方文檔描述如下:[2]

上下文管理器是一個對象,它定義了在執行with語句時要建立的運行時上下文。上下文管理器處理進入和退出所需運行時上下文以執行代碼塊。通常使用with語句(在with語句中描述),但是也可以通過直接調用它們的方法來使用。上下文管理器的典型用法包括保存和恢復各種全局狀態,鎖定和解鎖資源,關閉打開的文件等等。

在PEP-0343文檔[3]中提到,context是一個曖昧的詞彙,並提及"runtime context"(運行時上下文)和"runtime environment"是類似的。

Go

Go語言的context包如此描述:context包定義了Context類型,該類型包含了截止日期、取消信號以及跨API的進程間的其他用戶級別範圍的變量。[4]

外部連結

參考資料

  1. ^ ServletContext (Servlet 3.1 API Documentation - Apache Tomcat 8.0.53). tomcat.apache.org. [2020-01-15]. (原始內容存檔於2020-01-15). 
  2. ^ 3. 数据模型 — Python 3.8.1 文档. docs.python.org. [2020-01-15]. (原始內容存檔於2020-04-27). 
  3. ^ PEP 343 -- The "with" Statement. Python.org. [2020-01-15]. (原始內容存檔於2014-12-14) (英語). 
  4. ^ context - The Go Programming Language. golang.org. [2020-01-15]. (原始內容存檔於2020-01-15).