java

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ java ] in KIDS
글 쓴 이(By): ahsarang (뭐가좋을까)
날 짜 (Date): 1998년 11월 28일 토요일 오후 05시 37분 15초
제 목(Title): 쓰레드를 안전하게 죽이는 방법~~~



   Thread class의 stop() method는 deprecated됐습니다.
   쓰레드를 외부에서 강제로 종료시키는 것은
   심가각한 문제를 야기할 수 있기 때문입니다.
   일테면...
     A라는 쓰레드가 z라는 리소스에 lock을 걸었습니다.
     근데 B라는 쓰레드가 A가 z에대하여 unlock을 하기
     전에 A.stop()을 하는 경우 z는 계속해서 lock상태에 있게 되는거 
     같더군요. 유닉스에서 쓰레드는 어떻게 처리되는지 모르겠지만
     윈도우즈에서도 Terminate같은 API는 제공하고 있지만
     가능하면 사용하지 말라고 되어있는거 같았습니다.
   외 위와같은 상황을 OS차원에서 해결할 수 없는지 전 아직 이해를 못하겠더군요.
   
   보통 쓰레드가 일이 끝나기 전에 종료되야할 필요가 있을 경우
   조건 변수를 사용해서 끝나게 합니다.

   public void run()
   {
     while (condition)
     {
        do_job();
     }
   }

   오래걸리는 일이면 job을 적당한 크기로 나누어서 단위의 일이 끝날 때 마다
   조건을 검사하게 하면 돼겠죠?
   여기서 condition변수값은 타이머가 바꿔주면 되겠네요.

   ----
   근데 위와 같은 경우에 해당하지 않는다면 아직 stop()을 사용하셔도...
   ----

   -----------------------------------------------------------------
   ---                     + Ahsarang::Ahsarang(God &god)
    시그를 바꾸기로 했다.  | {
    근데 뭐가좋을까?       |    this->SetPower(god.GetPower());
   ---                     + }
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.