Kannst Du mir helfen, diese Stelle zu identifizieren?
Code
static void *VideoDisplayHandlerThread(void *dummy) {
prctl(PR_SET_NAME, "video decoder", 0, 0, 0);
sleep(2);
pthread_cleanup_push(delete_decode, NULL);
for (;;) {
// fix dead-lock with CuvidExit
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
pthread_testcancel();
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
VideoUsedModule->DisplayHandlerThread();
}
pthread_cleanup_pop(NULL);
return dummy;
}
Alles anzeigen
Das ist die Hauptschleife und nur da erkennt er den cancel. Wenn er da also nicht mehr durchkommt bleibt der cancel hängen.