线程退出前操作

#include <unistd.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

void cleanup()
{
    printf("cleanup\n");
}

void *test_cancel(void)
{
    pthread_cleanup_push(cleanup,NULL);
    printf("test_cancel\n");

    while(1)
    {
        printf("test message\n");
        sleep(1);
    }
    pthread_cleanup_pop(0);
}
int main()
{
    pthread_t tid;
    pthread_create(&tid,NULL,(void *(*)(void *))test_cancel,NULL);
    sleep(2);
    pthread_cancel(tid);
    pthread_join(tid,NULL);
    return 0;
}

线程退出前操作,布布扣,bubuko.com

时间: 2024-08-08 18:17:14

线程退出前操作的相关文章

[转载]DllMain中不当操作导致死锁问题的分析--线程退出时产生了死锁

(转载于breaksoftware的csdn博客) 我们回顾下之前举得例子 case DLL_PROCESS_ATTACH: { printf("DLL DllWithoutDisableThreadLibraryCalls_A:\tProcess attach (tid = %d)\n", tid); HANDLE hThread = CreateThread(NULL, 0, ThreadCreateInDllMain, NULL, 0, NULL); WaitForSingleO

Java Concurrency - 线程的基础操作

创建线程 在 Java 中,创建线程有两种方式: 继承 java.lang.Thread 类,重写 run 方法. public class MyJob extends Thread { @Override public void run() { System.out.println("Hello Thread"); } public static void main(String[] args) { Thread thread = new MyJob(); thread.start(

015 线程退出 启动

线程退出 启动  ● 当一个进程销毁的时候 ○ 销毁临时对象 ○ 释放堆栈 ○ 将返回值设置为我的退出代码 ○ 减少进程内核对象的使用次数 ● 当一个线程销毁的时候 ○ 销毁临时对象 调用我的们的析构函数 ○ 释放当前线程里面锁分配堆栈 -> 窗口 -> HOOK ○ 将返回值设置为我的退出代码 线程的入口函数的返回值设置为我的退出代码 ○ 减少进程内核对象的使用次数 ● ExitThread 立即结束当前线程 ● TerminateThread 可以结束其他的线程 ● Exit ○ 会将属于

lock了mutex的线程退出了却没有unlock时会怎么样?

https://stackoverflow.com/questions/4424193/what-happens-to-mutex-when-the-thread-which-acquired-it-exits?noredirect=1&lq=1 解释当一个lock了mutex的线程退出了,却没有主动unlock这个mutex时,会发生什么 If you created a robust mutex by setting up the right attributes before callin

优化cdh集群性能-可在安装集群前操作002

优化cdh集群性能-可在安装集群前操作002//读完cdh官方文档后,可知的优化操作 可在<03搭建cdh 生产环境前的Linux 优化(涉及到Linux内存参数优化)>https://blog.51cto.com/12445535/2365948 这步同时操作 讲解了:提供了一些性能问题的解决方案,并介绍了配置最佳实践. 1.禁止tuned 服务 //是内存分配管理//关于tuned服务是什么?RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-a

delphi xe10 手机程序事件服务操作、退出键操作

//程序事件服务操作 var FMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.Current.SupportsPlatformService (IFMXApplicationEventService, IInterface(FMXApplicationEventService)) then FMXApplicationEventService.SetApplicationEve

SocketException: 由于线程退出或应用程序请求,已放弃I/O操作&quot; 解决方案

1 1.private static ManualResetEvent posReceiveDone = new ManualResetEvent(false); 2 3 2.posThread = new Thread(delegate() { Pos(); }); posThread.Start(); 4 5 3.public void Pos() 6 7 { 8 9 ……//填写必要代码 10 11 PosSocket.BeginReceive(PosMsgBuffer, 0, 2, 0,

线程退出时执行函数,处理资源

一般来说,Posix的线程终止有两种情况:正常终止和非正常终止.线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式: 非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的. 不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源, 特别是锁资源,就是一个必须考虑解决的问题. 最经常出现的情形是资源

一个双线程下同时操作指针变量导致野指针出现的问题总结

来源:http://blog.csdn.net/lezhiyong 问题: 在某项目的测试过程中,测试在高清压力测试过程中会偶尔出现RSS崩溃现象,崩溃时间不确定,由于在守护进程服务的守护下,RSS崩溃后被重新拉起,所以这个故障在崩溃马上发送时在网管上并没有体现服务停止的告警,只有当测试人员去RSS的var/run目录下找到edum***开头的文件才指定RSS发送崩溃.根据文件中提供的崩溃时间描述,有时是几天前的,有时是几个小时前的,测试人员较难回忆其当时做了什么操作.根据多个edum***文件