본문 바로가기
C#

C# 스레드(매개변수) 실행, 동기화(Lock, Monitor)

by 건실한청년 2022. 3. 8.

매개변수 없는 Thread(스레드) 실행

//일반 스레드 실행
public void ThreadFunc() {
  //...
}
new Thread(ThreadFunc).Start();
 

매개변수 있는 Thread(스레드) 실행

//매개변수 스레드 실행 : 파라메타는 object형식으로!
public void ThreadParamFunc(object num) {
  int number = (int)num;
  //...
}
new Thread(new ParameterizedThreadStart(ThreadParamFunc)).Start(num);
 

무한루프 Thread(스레드) 실행

//무한루프 스레드 예제
bool isThread = true;
public void ThreadFunc() {
  while(isThread) {
    Thread.Sleep(1000);
    //처리...
  }
}
new Thread(ThreadFunc).Start();
 
//스레드 종료
void threadStop() {
  isThread = false;
}
 

Thread(스레드) 동기화(해당 루틴이 종료될때까지 재진입 막기)

Lock이용
System.Object lockObj = new System.Object();
 
void func() {
  lock(lockObj) {
    //처리...
  }
}


Monitor이용
System.Object lockObj = new System.Object();
 
void func() {
  //동기화 시작
  Monitor.Enter(lockObj) {
 
  //처리...
 
  //동기화 종료
  Monitor.Exit(lockObj);
}