Пример за прекратяване на нишки

  • Създаваме нишка

  • Опитваме да я прекратим

  • Изчакваме я да приключи

pthread_create(&thread, NULL, thread_func, NULL);
pthread_cancel(thread);
pthread_join(thread, NULL);
  • Маркираме нишката като неотменима

    • ... докато работи

    • ... и докато не разрешим прекратяване

    • ... и достигнем точка за прекратяване

pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
...
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
pthread_testcancel();
  • Правим нишката отменима по всяко време

  • Но засега я маркираме в неотменяемо състояние

    • ... докато работи

    • ... и докато не разрешим прекратяване

  • Нишката се прекратяване автоматично, няма нужда да достигаме до точка за прекратяване

threads-cancel.c

Компилиране на програмата с изрична инструкция към компилатора да поддръжка нишки:

Last updated

Was this helpful?