取消一个线程
2013-08-10 23:14
113 查看
#include <pthread.h> #include <stdio.h> #include <stdlib.h> void *thread_function(void *arg); int main() { int res; pthread_t a_thread; void *thread_result; res = pthread_create(&a_thread, NULL, thread_function, NULL); if (res != 0) { perror("Thread create failed!"); exit(EXIT_FAILURE); } sleep(4); printf("Canceling thread...\n"); res = pthread_cancel(a_thread); if (res != 0) { perror("Thread cancel failed!"); exit(EXIT_FAILURE); } printf ("Waiting for thread to finished...\n"); res = pthread_join(a_thread, &thread_result); if (res != 0) { perror ("Thread join failed!"); exit(EXIT_FAILURE); } printf("Thread canceled!"); exit(EXIT_FAILURE); } void *thread_function(void *arg) { int i; int res; res = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); if (res != 0) { perror("Thread setcancelstate failed!"); exit(EXIT_FAILURE); } res = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); if (res != 0) { perror("Thread setcanceltype failed!"); exit(EXIT_FAILURE); } printf("thread_function is running...\n"); for (i = 0; i < 10; i++) { printf("Thread is still running (%d)...\n", i); sleep(1); } pthread_exit(0); }
相关文章推荐
- 如何取消一个正在运行的线程
- linux程序设计——取消一个线程(第十二章)
- 如何取消一个正在运行的线程
- pthread_cancel,取消一个线程
- 取消一个线程
- c# Task编程一个task抛出异常后怎么取消其他线程
- 如何取消一个正在运行的线程
- 关于多个异步任务线程如何取消上一个线程的问题
- 如何异步取消一个线程
- linux程序设计——取消一个线程(第十二章)
- 取消一个线程
- 弄懂线程取消的一个例子
- 【Windows8开发】异步编程进阶篇之 谈task如何避免线程取消引发的系列问题
- IOS后台线程更新UI的一个陷阱
- 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
- JavaWeb 服务启动时,在后台启动加载一个线程。
- BeginInvoke会重新开一个线程
- 【自用】Android中一个简单的计时器,用Handler加Runnable线程实现
- 架构设计:进程还是线程?是一个问题!
- C#多线程学习(二) 如何操纵一个线程