pthread_cancel() in C with example
prerequisite: Multithreading, pthread_self() in C with Example
pthread_cancel() = This function cancel a particular thread using thread id. This function send a cancellation request to the thread.
Syntax : – int pthread_cancel(pthread_t thread);
First Program : – Cancel self thread
// C program to demonstrates cancellation of self thread // using thread id #include <stdio.h> #include <stdlib.h> #include <pthread.h> void* calls(void* ptr) { printf("GeeksForGeeks"); // To exit the current thread // pthread_self() return the particular thread id pthread_cancel(pthread_self()); return NULL; } int main() { // NULL when no attribute pthread_t thread; // calls is a function name pthread_create(&thread, NULL, calls, NULL); // Waiting for when thread is completed pthread_join(thread, NULL); return 0; } |
Output:
GeeksForGeeks
If you use Linux then compile this program gcc program_name.c -lpthread
Second Program : – Cancel other thread
// C program to demonstrates cancellation of another thread // using thread id #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <pthread.h> // To Count int counter = 0; // for temporary thread which will be // store thread id of second thread pthread_t tmp_thread; // thread_one call func void* func(void* p) { while (1) { printf("thread number one\n"); sleep(1); // sleep 1 second counter++; // for exiting if counter = = 5 if (counter = = 2) { // for cancel thread_two pthread_cancel(tmp_thread); // for exit from thread_one pthread_exit(NULL); } } } // thread_two call func2 void* func2(void* p) { // store thread_two id to tmp_thread tmp_thread = pthread_self(); while (1) { printf("thread Number two"); sleep(1); // sleep 1 second } } // Driver code int main() { // declare two thread pthread_t thread_one, thread_two; // create thread_one pthread_create(&thread;_one, NULL, func, NULL); // create thread_two pthread_create(&thread;_two, NULL, func2, NULL); // waiting for when thread_one is completed pthread_join(thread_one, NULL); // waiting for when thread_two is completed pthread_join(thread_two, NULL); } |
Output:
thread number one thread number two thread number one thread number two
If you use Linux then compile this program gcc program_name.c -lpthread
This article is contributed by Devanshu Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Recommended Posts:
- asctime() and asctime_s() functions in C with Examples
- time.h header file in C with Examples
- __builtin_inf() functions of GCC compiler
- Count substrings that contain all vowels | SET 2
- How can we use Comma operator in place of curly braces?
- Basic Code Optimizations in C
- Constants vs Variables in C language
- Sum of an array using MPI
- Difference between pointer to an array and array of pointers
- dot (.) operator in C/C++
- Features and Use of Pointers in C/C++
- Difference between while and do-while loop in C, C++, Java
- C program to sort an array using pointers
- C Program to count the Number of Characters in a File
- Analyzing BufferOverflow with GDB



