C# - κ³ κΈ νλ‘κ·Έλλ° (μ€λ λ)
C# - κ³ κΈ νλ‘κ·Έλλ° (μ€λ λ)
μ€λ λ
- νλ‘κ·Έλ¨ λ΄λΆμ μλ μ μ΄μ λ¨μΌ μμ°¨ νλ¦.
λ¨μΌ μ€λ λ vs λ©ν° μ€λ λ
- λ¨μΌ μ€λ λλ ν, 곡μ λ°μ΄ν°, μ½λ, μ€ν, λ μ§μ€ν°κ° νλλ§ μλ ꡬ쑰μ΄κ³ ,
λ©ν° μ€λ λλ ν, 곡μ λ°μ΄ν°, μ½λ, λ μ§μ€ν°λ νλμ§λ§, μ€νμ΄ μ¬λ¬κ°μ΄λ©° μνμ λ³΄κ° μ¬λ¬κ°μΈ κ²μ μλ―Ένλ€.
μ€λ λ μμ
using System;
using System.Threading;
class SimpleThreadApp {
static void ThreadBody()
{
for (int i =0; i<5; i++)
{
Console.WriteLine(DateTime.Now.Second+":" +i);
Thread.Sleep(1000);
}
}
public class Program
{
public static void Main(string[] args)
{
ThreadStart ts = new ThreadStart(ThreadBody);
Thread t = new Thread(ts);
Console.WriteLine("***Start of Main");
t.Start();
Console.WriteLine("***End of Main");
}
}
}
κ²°κ³Ό νλ©΄
- Sleepμ μ§μ ν μκ° λμ μ€νμ λ©μΆκ³ λκΈ° μνλ‘ κ°λ κ²μ΄λ€. 1000μ΄λ©΄ 1μ΄μ΄λ€.
- μ€λ λλ λ°λμ System.Threadingμ ν΄μ€μΌνλ€.
μ€λ λ ν΄λμ€λ₯Ό ν΅ν΄μ νλ‘νΌν°λ₯Ό μ΄μ©ν μλ μλ€.
κ·Έ μ€μμλ Thread.Nameμ λ§€μ° μ μ©νκ² μ¬μ©λλ νλ‘νΌν° μ΄λ―λ‘ μμ λ₯Ό ν΅ν΄ λ€λ€λ³΄μ.
using System;
using System.Threading;
class ThreadProperty {
public void ThreadBody()
{
Thread myself = Thread.CurrentThread;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("{0} is activated => {1}", myself.Name, i);
Thread.Sleep(1000);
}
}
}
public class Program
{
public static void Main(string[] args)
{
ThreadProperty obj = new ThreadProperty();
ThreadStart ts = new ThreadStart(obj.ThreadBody);
Thread t1 = new Thread(ts);
Thread t2 = new Thread(ts);
t1.Name = "Apple"; t2.Name = "Orange";
t1.Start(); t2.Start();
}
}
κ²°κ³Ό νλ©΄
μ€λ λμ μνλ₯Ό λ³κ²½νλ λ©μλλ
Start, Sleep λΏλ§ μλλΌ Abort, Join, Suspend, Resumeμ΄ μλ€.
Joinμ ν΄λΉ μ€λ λμ μ€νμ΄ μ’ λ£λ λκΉμ§ κΈ°λ€λ¦¬λ λ©μλμ΄λ©°,
Abortλ μ€λ λλ₯Ό μ’ λ£,
Suspendλ μ€λ λλ₯Ό λκΈ° μνλ‘,
Resumeμ λκΈ° μν μ€λ λλ₯Ό μ€ν μνλ‘ λ§λ€μ΄μ€λ€.