[Rust] tokio: Runtime
tokioλ μ¬μ© μ¬λ‘μ λ°λΌ μ체μ μΌλ‘ λ°νμ ꡬμ±μ μ‘°μ νλ κ²μ΄ κ°λ₯νλ€.
λ°νμμ΄ μ΄λ€ μμΌλ‘ λμνλμ§, μ΄λ»κ² μ‘°μ μ ν΄λ³Ό μ μλμ§ λκ° μ 리ν΄λ³Έλ€.
λ°νμμ ꡬ쑰
tokioμ λ°νμμ μ½κ² λ§νλ©΄ μΌμ’
μ μ€λ λνμ΄λΌκ³ ν μ μλ€.
μ€λ λνμ μ μν΄λκ³ κ·Έ μμ μμμ async ν¨μλ₯Ό νΈμΆνλ©΄, Future κΈ°λ°μ μνλ¨Έμ μ½λλ‘ μΉνλμ΄μ μ€λ λνμ μ μ ν νμ©νλλ‘ νλ κ²μ΄λ€.
λ³΄ν΅ tokio::mainμ μ¬μ©ν΄μ μ΅μμ μ€νμ κΈλ‘λ² λ°νμμ κΉκ³ μ°λ λ°©μμ΄ λνμ μ΄λ€.
λλΆλΆμ μ΄ μ λλ‘λ§ μ°λ κ²½μ°κ° λ§κ³ , λ λλΆλΆμ μ΄ μ λλ‘λ μΆ©λΆν κ²μ΄λ€.
μ΄κ±΄ μ¬μ€ λ€μ μ½λμ λλ±νλ€.
main μμμ νΈμΆλ ν¨μλ₯Ό μ λΆ async ν΄λ‘μ λ‘ λ¬Άκ³ , κ·Έκ±Έ async runtime λ΄μμ μ€ννλ κ²μ΄λ€.
κ·Έλ¦¬κ³ μ κ±Έ νλ² λ κΉλ³΄λ©΄, μ¬μ€μ μ΄λ° ꡬ쑰λ€.
λ©ν° μ€λ λ λͺ¨λμ λͺ¨λ κΈ°λ³ΈκΈ°λ₯μ νμ±νν΄μ λ°νμμ μμ±νλ κ²μ΄λ€.
μ±κΈ μ€λ λ λͺ¨λ
리μμ€λ₯Ό μ κ² μ¨μΌ νλ νκ²½μ΄λΌλ©΄, μ±κΈμ€λ λ λͺ¨λλ‘ λμνκ² ν μλ μλ€.
μ΄λ¬λ©΄ μΆκ° μ€λ λλ₯Ό μ°μ§ μκ³ , νμ¬ νλ‘κ·Έλ¨μ λ©μΈ μ€λ λ λ΄μμλ§ κ²½λμ€λ λλ₯Ό λΆν ν΄μ μ°λ μμΌλ‘ λμνλ€.
μ€λ λ κ°μ μ‘°μ
worker_threads ν¨μλ₯Ό μ¬μ©νλ©΄, μνλ μ€λ λ κ°μλ₯Ό μ§μ ν μ μλ€.
λͺ
μμ μΌλ‘ μ€μ νμ§ μλλ€λ©΄ μμ€ν
μ μ½μ΄ κ°μλ‘ μ€μ λλ€.
λΆκ°κΈ°λ₯λ€
κΈ°λ³Έ μ€μ κ°μ μλ enable_all ν¨μλ, μ΄λ° μΌμ νλ€.
enable_ioλ λ§ κ·Έλλ‘ ioμ κ΄λ ¨λ λμμ νμ±ννλ νλκ·Έλ€. λΉμ°ν κ±°μ νμλ€.
enable_timeμ timer κ΄λ ¨ κΈ°λ₯λ€μ νμ±ννλ νλκ·Έλ€. sleep κ°μκ±Έ κ±Έλλ νμνκ³ , timeout κ±Έλ¦° taskλ₯Ό μ¬μ©ν λλ μ¬μ©λλ€.
multi runtime
μΌλ°μ μΈ μ¬μ©μ¬λ‘λ μλκ² μ§λ§, μ¬λ¬κ°μ λ°νμμ λμμ ꡬμ±ν΄μ μ¬μ©νκ³ μΆμ μλ μλ€.
μ΄λ€ μλΈνλ‘μΈμ€λ€λ³λ‘ 리μμ€λ₯Ό 격리νκΈΈ μνλ€κ±°λ, μλλ©΄ μ²λ¦¬ μλμ μλμ μΈ μ νμ λκ³ μΆλ€κ±°λ.
μΌλ¨, λ°νμμ μ€μ²©νλ ννλ‘λ λΆκ°λ₯νλ€.
λ°νμ λ΄μ λλ€λ₯Έ λ°νμμ ꡬμ±ν κ²½μ°μλ μ€λ₯κ° λ°μνλ€.
μ΄λ μλμ μΈ μ€κ³ μ μ½μ΄λ€.
νμ§λ§ λ°νμμ λ³λ ¬λ‘ μ€ννλ κ²μλ λ¬Έμ κ° μλ€.

λ°νμ μ€ν ν¨μ μ체λ blocking ν¨μλκΉ μ€λ λλ‘ λΆλ¦¬ν΄μ μ€νμν€κΈ°λ§ νλ©΄ λλ€.
μ°Έμ‘°
https://docs.rs/tokio/latest/tokio/runtime/index.html