pthread线程取消示例
2016-03-22 01:00
281 查看
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <pthread.h> #include <unistd.h> pthread_mutex_t lk = PTHREAD_MUTEX_INITIALIZER; pthread_t thread_id2; void work1(void *arg) { pthread_mutex_lock(&lk); puts("thread 1 working"); pthread_mutex_unlock(&lk); sleep(3); pthread_mutex_lock(&lk); pthread_cancel(thread_id2); pthread_mutex_unlock(&lk); int seconds = 5; while(seconds--) { pthread_mutex_lock(&lk); puts("thread2 was canceled, thread 1 continue working"); pthread_mutex_unlock(&lk); sleep(1); } } void work2(void *arg) { while(1) { sleep(1); pthread_mutex_lock(&lk); puts("thread 2 working"); pthread_mutex_unlock(&lk); } } int main() { pthread_t thread_id1; pthread_create(&thread_id1, NULL, (void *)work1, NULL); pthread_create(&thread_id2, NULL, (void *)work2, NULL); pthread_join(thread_id1, NULL); pthread_join(thread_id2, NULL); return 0; }
运行结果:
thread 1 working
thread 2 working
thread 2 working
thread 2 working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
thread2 was canceled, thread 1 continue working
PS:本篇仅为示例,终止其他线程并不是一个好的编程习惯。
相关文章推荐
- pthread_cancel
- 线程取消(pthread_cancel)
- pthread mutex使用的一些思考
- Android bionic缺失pthread_cancel的解决方法
- C/C++ pthread 线程库的封装
- pthread_cancel,pthread_killall 段错误
- C# 取消线程
- 初识Linux多线程编程
- 线程的取消pthread_cancel()函数(线程三)
- 使用pthread_cancel终止线程的填坑历程
- 码农改代码
- java中String的API使用方法
- 选择排序
- linux commands ---2 ,学习vim编辑器如何使用的方法。
- 异步IO/数据库/队列/缓存
- hdu 1003
- C++的四种cast操作符的区别--类型转换
- Android菜鸟App开发,第一个App(第二天)
- java数学精确运算—BigDecimal()类
- PL/SQL编程1-基础