`
deepfuture
  • 浏览: 4332089 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79401
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68342
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101467
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281106
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14595
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65531
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31305
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45182
社区版块
存档分类
最新评论

线程取消相关的pthread函数

阅读更多

2.5 与线程取消相关的pthread函数

int pthread_cancel(pthread_t thread) 
发送终止信号给thread线程,如果成功则返回0,否则为非0值。发送成功并不意味着thread会终止。

int pthread_setcancelstate(int state, int *oldstate) 
设置本线程对Cancel信号的反应,state有两种值:PTHREAD_CANCEL_ENABLE(缺省)和 PTHREAD_CANCEL_DISABLE,分别表示收到信号后设为CANCLED状态和忽略CANCEL信号继续运行;old_state如果不为 NULL则存入原来的Cancel状态以便恢复。

int pthread_setcanceltype(int type, int *oldtype) 
设置本线程取消动作的执行时机,type由两种取值:PTHREAD_CANCEL_DEFFERED和 PTHREAD_CANCEL_ASYCHRONOUS,仅当Cancel状态为Enable时有效,分别表示收到信号后继续运行至下一个取消点再退出和 立即执行取消动作(退出);oldtype如果不为NULL则存入运来的取消动作类型值。

void pthread_testcancel(void) 
检查本线程是否处于Canceld状态,如果是,则进行取消动作,否则直接返回。

 

任何导致线程的执行长时间被挂起的函数、导致进程停顿的通常系统调用(read()、select()、wait())都被当成一个取消点

pthread_exit为线程自己退出

线程退出时可以自定义 多个清理函数

1、pthread_cleanup_push(),增加清理函数

2、pthread_cleanup_pop(),减少清理函数

3、按清理函数登记的相反顺序调用它们

 

 

分享到:
评论

相关推荐

    pthread_create传递参数(线程函数传递参数示例)

    向线程函数传递参数的程序示例; 一个资源包,执行 tar zxvf example.tar.gz 解压资源; 复制readme.txt中的编译语句,编译得到可执行程序threadtest; ./threadtest 执行皆可看到效果。

    关于C语言多线程pthread库的相关函数说明

    函数pthread_create用来创建一个线程,它的原型为: extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg

    Posix线程编程指南.rar

    线程取消 2.1 线程取消的定义 2.2 线程取消的语义 2.3 取消点 2.4 程序设计方面的考虑 2.5 与线程取消相关的pthread函数 3.线程私有数据 3.1概念及作用 3.2创建和注销 4.线程...

    Posix线程编程指南

    线程取消 2.1 线程取消的定义 2.2 线程取消的语义 2.3 取消点 2.4 程序设计方面的考虑 2.5 与线程取消相关的pthread函数 3.线程私有数据 3.1概念及作用 3.2创建和注销 4.线程...

    创建线程:pthread_creat() 函数介绍.md

    主要介绍pthread_cread() 的介绍,便于自己学习和回顾。 如有错误欢迎指出。

    linux系统编程之线程.zip

    在一个线程中调用pthread_create()创建新的线程后,当前线程从pthread_create()返回继续往下执行,而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。start_routine函数接收一个参数,是...

    test_pthread_kill测试程序_

    pthread_kill测试,该函数可用来测试某个进程中的线程执行情况

    linux线程的取消(终止)方法

    线程取消的方法是向目标线程发Cancel信号(pthread_cancel函数发送Cancel信号),但如何处理Cancel信号则由目标线程自己决定,或者忽略、或者立即终止、或者继续运行至Cancelation-point(取消点),由不同的Canc

    Linux pthread相关函数用法说明(包括发生段错误的原因以及对策等)

    Linux pthread相关函数用法说明(包括发生段错误的原因以及对策等)

    多线程API.zip

    常见的多线程API和用法 pthread_self函数 pthread_create函数 pthread_exit函数 pthread_join函数 pthread_detach函数 pthread_equal函数

    pthread_self获取当前调用线程的识别码

    头文件  #include <pthread.h> 函数原形  pthread_t pthread_self();

    Linux系统编程之线程同步

    5. main 中加pthread_cancel()将子线程取消。 【pthrd_mutex.c】 结论: 在访问共享资源前加锁,访问结束后立即解锁。锁的“粒度”应越小越好。 死锁 1. 线程试图对同一个互斥量A加锁两次。 2. 线程1...

    linux创建线程之pthread_create的具体使用

     pthread_create是UNIX环境创建线程函数 头文件  #include<pthread> 函数声明  int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict ...

    C语言线程调度与优先级配置示例

    通过配置线程调度策略与优先级,可使各线程按照设定的顺序执行,从而达到线程间同步的目的,线程属性配置函数包括: pthread_attr_init(&attr[i]);// 初始化线程属性 pthread_attr_setschedpolicy(&attr[i], SCHED...

    Linux系统编程-(pthread)线程通信(围栏机制).pdf

    Linux线程里还支持一个围栏机制--也就是屏障功能。这个围栏机制,可以设置等待的线程数量,当指定...在Linux线程里的屏障功能由`pthread_barrier `系列函数实现,在<pthread.h>中定义,功能主要是用于多线程的同步。

    Posix Pthread API 总结文档

    个人学习Linux POSIX Pthread 中遇到的线程函数总结成doc文档!

    c++多线程的创建挂起执行与销毁

    DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数 { lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型 temp->progress->SetPos(temp->pos); //设置被传递过来的进度条的位置 while(temp->pos)...

    多线程与智能指针.pdf

    分离线程 线程创建默认是⾮分离的,当pthread_join()函数返回时,创建的线程终⽌,释放⾃⼰占⽤的系统资源 分离线程不能被其他线程等待,pthread_join⽆效,线程⾃⼰玩⾃⼰的。 //设置是否为分离线程 //PTHREAD_...

    C语言使用pthread多线程编程

    我们进行多线程编程,可以有多种选择,可以使用WindowsAPI,如果你在使用GTK,也可以使用GTK实现了的线程库,如果你想让你的程序有更多的移植性你好是选择POSIX中的Pthread函数库,我的程序是在Linux下写的,所以我...

Global site tag (gtag.js) - Google Analytics