본문 바로가기

운동하는 개발자/Lazarus

라자루스 스레드 종료 기다리기 / lazarus wait for thread terminate

728x90

종종 특정 스레드가 확실히 종료되고 메인 프로세스가 진행되야 하는 경우가 있습니다
예를들어 버튼을 누르면 파일을 읽고 다른버튼을 누르면 파일을 쓰는 프로그램이 있다면 write하는중에 또 write명령이 오면 동일 파일 접근으로 충돌이 발생하겠죠 

이럴 때 write쓰레드가 종료되길 기다릴때 사용가능합니다

//리눅스 환경
WaitForThreadTerminate(FFileWriteWorker.ThreadID, 0);

//윈도우 환경
WaitForThreadTerminate(FFileWriteWorker.Handle, 0);

함수 자체는 쓰레드아이디를 넘기든 핸들을 넘기든 상관없다고 되어있는데 윈도우10 환경에선 ThreadID를 넘길경우 동작하지 않는것을 확인하였습니다


 

728x90