[CS] μ€λ λ(Thread)
π‘ μ€λ λ(Thread)λ?
μ€λ λκ° λμ§, μ νμνμ§, C#μμ μ΄λ»κ² μ°λμ§ μ 리ν΄λ³΄μ
π μ€λ λλ?
μ€λ λλ νλ‘μΈμ€ μμμ μ€νλλ κ°μ₯ μμ λ¨μμ μμ νλ¦μ λλ€.
- νλμ νλ‘κ·Έλ¨(=νλ‘μΈμ€)μ μ΅μ 1κ°μ λ©μΈ μ€λ λλ₯Ό κ°μ§κ³ μ€ννκ²λ¨
- μΆκ°λ‘ μ€λ λλ₯Ό λ§λ€λ©΄, μ¬λ¬ μμ μ λμμ μ€νν μ μκ³ μ΄κ²μ λ©ν°μ€λ λ©(Multi-threading) μ΄λΌκ³ ν¨!
π μ μ€λ λλ₯Ό μΈκΉ?
| λͺ©μ | μ΄μ |
|---|---|
| λ³λ ¬ μμ μ²λ¦¬ | μ¬λ¬ μμ μ λμμ μ²λ¦¬ κ°λ₯ |
| UI λ©μΆ€ λ°©μ§ (μνΌ/WPF λ±) | λ¬΄κ±°μ΄ μμ μ λ€λ₯Έ μ€λ λλ‘ λΆλ¦¬ |
| λ°±κ·ΈλΌμ΄λ μμ μ²λ¦¬ | λ€μ΄λ‘λ, λ‘κΉ λ± μ₯κΈ° μμ μν |
| CPU νμ© κ·Ήλν | λ©ν°μ½μ΄ CPUλ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ© |
π κΈ°λ³Έ Thread μ¬μ© μμ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(DoWork); // μλ‘μ΄ μ€λ λ μμ±
thread.Start(); // μ€λ λ μμ
Console.WriteLine("Main μ€λ λλ κ³μ μ€ν μ€...");
}
static void DoWork()
{
Console.WriteLine("λ³λ μ€λ λμμ μμ
μ€...");
Thread.Sleep(2000); // 2μ΄ λκΈ°
Console.WriteLine("μμ
μλ£");
}
}
π μΆλ ₯ μμ
1
2
3
Main μ€λ λλ κ³μ μ€ν μ€...
λ³λ μ€λ λμμ μμ
μ€...
μμ
μλ£
Main()κ³ΌDoWork()κ° λμμ μ€νλ¨DoWork()λ λ³λμ μ€λ λμμ λ 립μ μΌλ‘ λμν¨
π§© Thread vs Task μ°¨μ΄μ μ?
ThreadλΏ μλλΌ Task, async/awaitλ λΉμ·νκ² λΉλκΈ° μμ
μ μ²λ¦¬ν¨ νμ§λ§ λμ μν κ³Ό μ©λμμ μ°¨μ΄κ° μλ€!.
| νλͺ© | Thread | Task / async |
|---|---|---|
| λͺ©μ | μ μμ€ μ€λ λ μ μ΄ | κ³ μμ€ λΉλκΈ° μμ κ΄λ¦¬ |
| μ€λ λ μ§μ μμ± | β μ§μ μμ± λ° μλͺ μ μ΄ | β λ΄λΆμ μΌλ‘ μ€λ λ ν νμ© |
| μ½λ κ°κ²°μ± | β λΉκ΅μ 볡μ‘ν¨ | β
async/awaitλ‘ λ§€μ° κ°κ²°ν¨ |
| μ ν©ν μ©λ | μ§μμ μΈ λ°±κ·ΈλΌμ΄λ μμ , νμ΄λ¨Έ λ± | νμΌ λ€μ΄λ‘λ, API νΈμΆ λ± I/O μμ |
π μ£Όμν μ
- μ€λ λλ₯Ό λ무 λ§μ΄ λ§λ€λ©΄ μ€νλ € μ±λ₯μ΄ λ¨μ΄μ§ μ μμ΄μ (
컨ν μ€νΈ μ€μμΉ λΉμ©)컨ν μ€νΈ μ€μμΉ λΉμ©- CPUκ° μ€ν μ€μΈ μ€λ λλ₯Ό λ°κΎΈκΈ° μν΄, νμ¬ μν(Context)λ₯Ό μ μ₯νκ³ , μ μ€λ λμ μνλ₯Ό λΆλ¬μ€λ κ³Όμ μ μμ
π μμ½
| ν€μλ | μ€λͺ |
|---|---|
| μ€λ λ(Thread) | μμ μ μ€ννλ μ΅μ λ¨μ |
| λ©ν°μ€λ λ© | λμμ μ¬λ¬ μμ μ²λ¦¬ κ°λ₯ |
| Thread ν΄λμ€ | μ€λ λ μ§μ μ μ΄ν λ μ¬μ© |
| Task | κ³ μμ€ λΉλκΈ° μ²λ¦¬μ© API (async/awaitκ³Ό ν¨κ» μ¬μ©) |
μ λλ‘ νμ©νλ©΄ νλ‘κ·Έλ¨μ μ±λ₯κ³Ό μ¬μ©μ κ²½νμ νμΈ΅ λμ΄μ¬λ¦΄ μ μμ!
This post is licensed under CC BY 4.0 by the author.
