dispatch_sync로 인해 잠긴 스레드를 죽일 수 있습니까? 여기dispatch_sync로 잠긴 스레드를 kill하십시오.
dispatch_sync(q_, ^{
...
});
이 잠겨 스택 추적한다 :
#0 0x00007fff8d69951a in semaphore_wait_trap()
#1 0x00007fff9aad7c5b in _os_semaphore_wait()
#2 0x0000000100aec692 in _dispatch_barrier_sync_f_slow()
내가 pthread_kill
를 사용하여 시도하지만 스레드가 종료되지 않습니다 여기에 코드입니다.
이것은 좋은 조언이지만 좀 더 설명 할 가치가 있습니다. 강제로 스레드를 죽이는 것은 나쁜 아이디어입니다. 왜냐하면 그 스레드에서 실행되는 코드에 의해 할당 된 자원이 유출 될 것이기 때문입니다. 런타임에 임의 스레드가 교착 상태에 있거나 바쁜지 알 수있는 방법이 없습니다. 교착 상태에 있음을 알 수있는 정보가 충분하다면 논리적으로 교착 상태를 막을 수있는 충분한 정보가 있어야합니다. 마지막으로,'dispatch_sync'는 * 유효한 * 사용법을 가지고 있지만, 비동기 코드를 동기식으로 만들거나 인터 로킹 스레드 용으로 사용해서는 안됩니다. (내가 자주 사용하는 방식입니다.) – ipmcc
나는 그 말을하지 않습니다. 스레드가 좋은 해결책입니다, 나는 단지 뭔가를 실험하기 위해 그것을 죽이려 고합니다. 지금까지 교착 상태를 풀기 위해 그것을 죽일 방법을 찾지 못했습니다. – MartinMoizard