Pthreads provides an API for managing thread cancellation. The pthread setcancel
ID: 641817 • Letter: P
Question
Pthreads provides an API for managing thread cancellation. The pthread setcancelstate() function is used to set the cancellation state. Its prototype appears as follows:
pthread setcancelstate(int state, int *oldstate)
The two possible values for the state are PTHREAD CANCEL ENABLE and PTHREAD CANCEL DISABLE.
Using the code segment shown in Figure 3.27, provide examples of two operations that would be suitable to perform between the calls to disable and enable thread cancellation
Figure 3.27 below
int oldstate;
pthread setcancelstate(PTHREAD CANCEL DISABLE, &oldstate);
/* What operations would be performed here? */
pthread setcancelstate(PTHREAD CANCEL ENABLE, &oldstate);
Explanation / Answer
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
#include "thread_internal.h"
int pthread_setcancelstate(int state,int*oldstate) {
if ((state==PTHREAD_CANCEL_ENABLE)||(state==PTHREAD_CANCEL_DISABLE)) {
_pthread_descr this=__thread_self();
if (oldstate) *oldstate=this->cancelstate;
this->cancelstate=state;
return 0;
}
return EINVAL;
}
thread_internal.h
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.