requisito previo: subprocesamiento múltiple , pthread_self() en C con ejemplo
pthread_cancel() = Esta función cancela un hilo en particular usando la identificación del hilo. Esta función envía una solicitud de cancelación al hilo.
Sintaxis: – int pthread_cancel(pthread_t thread);
Primer programa: – Cancelar hilo propio
// 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; }
Producción:
GeeksForGeeks
Si usa Linux, compile este programa gcc program_name.c -lpthread
Segundo programa: – Cancelar otro hilo
// 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); }
Producción:
thread number one thread number two thread number one thread number two
Si usa Linux, compile este programa gcc program_name.c -lpthread
Este artículo es una contribución de Devanshu Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA