컨ν μ€νΈ | δΈδΈζ | γ³γ³γγγΉγ |
Go μλ²μμ κ° μμ²μ goroutine μ ν΅ν΄ λ³λ ¬μ μΌλ‘ μ²λ¦¬λλ€. κ³ λ£¨ν΄μ λμμ μ€νλλ©° μλ‘ κ°μνμ§ μμμΌ νλ€. Context λ μ΄λ¬ν κ³ λ£¨ν΄κ°μ μμ ν λ°μ΄ν° λ° μ 보 곡μ λ₯Ό μ§μνλ€.
-
λͺ©μ : Google μ Context Package λ₯Ό νΉμ ν λͺ©μ μ κ°μ§κ³ κ°λ°νμλλ°, μ΄λ 볡μ‘ν μλ² νκ²½μμ μμ νκ³ ν¨μ¨μ μΈ λμμ± μ²λ¦¬λ₯Ό μ§μνκΈ° μν΄μμλ€.
-
λͺ μΉ: Context λΌλ λͺ μΉμ ν΄λΉ ν¨ν€μ§κ° μ£Όλ‘ μμ²κ³Ό μμ μ λ¬Έλ§₯(context)μ κ΄λ¦¬νκ³ μ λ¬νκΈ° μν΄ λͺ λͺ λ κ²μΌλ‘, μμ νκ³ ν¨μ¨μ μΈ λμμ± μ²λ¦¬λ₯Ό μν ν΅μ¬ κ΅¬μ± μμμμ λͺ ννκ² λνλ΄κ³ μλ€.
Contextλ μμ²μ μ²λ¦¬μ 보μ μ격 μ¦λͺ , μΆμ μ 보, λ°λλΌμΈ, μ·¨μ μ νΈμ κ°μ μ 보λ₯Ό ν¨κ» μ λ¬νλ€. μ΄λ₯Ό ν΅ν΄ Go μλ²λ μ¬λ¬ μμ²μ λμμ μ²λ¦¬νλ©΄μλ μμ νκ² μμ² λ²μμ μ 보λ₯Ό 곡μ νκ³ , κ° κ³ λ£¨ν΄μ΄ μμ μ μ€μ§νκ±°λ μκ° μ΄κ³Ό λ±μ 쑰건μ κ°μ§ν μ μλ€.
보μ μ격 μ¦λͺ,μΆμ μ 보,λ°λλΌμΈλ°μ·¨μ μ νΈλ₯Ό API λ° νλ‘μΈμ€ κ²½κ³λ₯Ό ν‘λ¨νμ¬ μ λ¬.- 보μ μ격 μ¦λͺ
(security credentials):
- 보μκ³Ό κ΄λ ¨λ μ 보 (e.g., μΈμ¦ ν ν° etc)
- μΆμ μ 보(tracing information):
- μμ€ν μμ μμ²μ΄ μ΄λ»κ² μ²λ¦¬λλκ°μ λν μ 보 (e.g., μΆμ ID, λ‘κΉ μ 보 etc)
- λ°λλΌμΈ(deadline):
- νΉμ μμ μ μννλλ° νμ©λ μκ°.
- μ·¨μ μ νΈ(cancellation signals):
- μμ²μ΄ μ·¨μλμμμ λνλ΄λ μ νΈ (e.g., μ¬μ©μ μμ² μ·¨μ, μκ° μ΄κ³Ό etc)
- μ¬μ©μ μμ² μ·¨μ: μμ²ν νμ΄μ§μ λ‘λ©μκ°μ΄ κΈΈμ΄ μμ²μ μ·¨μν κ²½μ°
- μκ° μ΄κ³Ό: νΉμ μμ μ΄ μ§μ λ μκ° λ΄μ μλ£λμ§ λͺ»νμ κ²½μ°
- μλ¬: μμμΉ λͺ»ν μλ¬κ° λ°μν κ²½μ°
- Context κ° μ·¨μλ κ²½μ° νμλ context λ€λ ν¨κ» μ·¨μλλ€.
- μ¦, μ°κ²°λμ΄μλ μμ μμ μ΄ μ·¨μλλ©΄ νμ μμ λ μμ νκ² μ’ λ£λμ΄ λ¦¬μμ€κ° νμλλλ‘ νλ€.
- μμ²μ΄ μ·¨μλμμμ λνλ΄λ μ νΈ (e.g., μ¬μ©μ μμ² μ·¨μ, μκ° μ΄κ³Ό etc)
- 보μ μ격 μ¦λͺ
(security credentials):
- Go νλ‘κ·Έλ¨μμ λ€μ΄μ€λ RPC λ° HTTP μμ²λΆν° λκ°λ μμ²κΉμ§ ν¨μ νΈμΆ 체μΈμ ν΅ν΄ Contextλ₯Ό μ λ¬.
- ν¨μ νΈμΆ 체μΈ(function call chain): μμ²μ΄ μ²λ¦¬λλ κ³Όμ
- μμ²μ κ΄λ ¨λ μ 보 λ° μ€μ μ Contextλ₯Ό ν΅ν΄ μ λ¬νκ³ κ³΅μ : ν΄λΌμ΄μΈνΈκ° μλ²λ‘ μμ² β μλ²μμ λ€μν μ€κ° λ¨κ³ λ° μλΉμ€λ₯Ό κ±°μΉ¨
- λμΌν Contextλ₯Ό μ¬λ¬ ν¨μ νΈμΆ μ¬μ΄μμ μμ νκ² κ³΅μ ν μ μλ€.
- Contextλ ν λ² μμ±λλ©΄ λ΄λΆμ μ λ³΄κ° λ³κ²½λμ§ μκΈ° λλ¬Έ.
- ν¨μμ 첫 λ²μ§Έ λ§€κ°λ³μλ‘ Contextλ₯Ό μ¬μ© ν κ².
- Requestμ κ΄λ ¨μ΄ μμ΄ λ³΄μ΄λλΌλ Contextλ₯Ό μ¬μ© ν κ².
- ꡬ쑰체μ Context λ©€λ² μΆκ°νκΈ°.
- λμ: λ©μλμ λ§€κ°λ³μλ‘ λκΈ°κΈ°.
- μμΈ: νμ€ λΌμ΄λΈλ¬λ¦¬λ μλνν° λΌμ΄λΈλ¬λ¦¬μ μΈν°νμ΄μ€μ μΌμΉν΄μΌ νλ λ©μλμΈ κ²½μ°.
- μ¬μ©μ μ μ Context μ ν λ§λ€κΈ°.
- Deadline
Deadline() (deadline time.Time, ok bool)
- μμ μ μμν΄μΌ νλ μκ° (λ°λλΌμΈ) λ° λ°λλΌμΈμ΄ μ€μ λμλμ§ μ¬λΆλ₯Ό λ°ν.
- μμ μ΄ μμν΄μΌ νλμ§ μ¬λΆλ₯Ό κ²°μ .
- μμ μ μκ° μ νμ λΆμ¬.
- Done
Done() <-chan struct{}
- μμ
μ λν μ·¨μ μ νΈ μν μ νλ μ±λμ λ°ν.
- μ±λμ΄ λ«νλ©΄ ν΄λΉ ν¨μλ μμ μ μ€λ¨νκ³ λ°ν.
- μμ
μ λν μ·¨μ μ νΈ μν μ νλ μ±λμ λ°ν.
- Err
Err() error
- Contextκ° μ·¨μλ μ΄μ λ₯Ό λνλ.
- nil:
- Done μ±λμ΄ μμ§ λ«νμ§ μμ κ²½μ°.
- Value
Value(key any) any
- Contextμ κ΄λ ¨λ κ°μ κ°μ Έμ¬ λ μ¬μ©. μ£Όλ‘ μ¬μ©μ μ§μ λ°μ΄ν°λ₯Ό Contextμ μ μ₯νκ³ μΆμΆνλλ° μ¬μ©.
- nil:
- νΉμ ν€μ λν κ°μ΄ μλ κ²½μ°
- WithValue
- Contextμ κ΄λ ¨λ κ°μ μΆκ°ν λ μ¬μ©.
- WithTimeout
- ν΄λΉ Context μ μκ° μ νμ μ€μ νκ³ μ ν λ μ¬μ©.
- Background
Background() Context
- λͺ¨λ Context νΈλ¦¬μ 루νΈ.
- λ€λ₯Έ λͺ¨λ context λ μ΄λ₯Ό κΈ°λ°μΌλ‘ νμλλ€.
- μ·¨μλμ§ μμ.
- κΈ°ν λ° κ°μ΄ μμ.
- 무ν κΈ°νμ μ§λκ³ μμ.
- μ μμ μΌλ‘ μ¬μ©.
- μ£Όλ‘ main ν¨μλ μ΄κΈ°ν μμ μ μ¬μ©.
- μ±μ μ΅μμ λ 벨μμ μμν λ μ£Όλ‘ νμ©λ¨.
- λͺ¨λ Context νΈλ¦¬μ 루νΈ.
- Go Concurrency Patterns: Context by. Sameer Ajmani
Published: 29 July 2014 - Documentation
Published: Oct 10, 2023