Thread 종료하기

        let thread = Thread.init {
            while (!Thread.current.isCancelled) {
                print("loop")
                Thread.sleep(forTimeInterval: 1)
            }
        }
        thread.start()
        DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
            print("cancel Thread")
            thread.cancel()
        }

Thread.cancel() 을 선언해도 !Thread.current.isCancelled ​를 While문의 Escape으로 작성해주지 않으면 Thread가 중지되지 않는다. 그 이유는 Thread.cancel() 함수는 해당 Thread의 state(flag)를 cancel state로 Set만 하기 때문이다.

comments powered by Disqus