易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux操作系统下的多线程编程详细解析(4)


   函数原型:
   
#include <pthread.h>
void pthread_cleanup_push(void (*rtn)(void *),void *arg);
    函数rtn是清理函数,arg是调用参数
void pthread_cleanup_pop(int execute);
 
 
    在前面讲过线程的终止方式,是正常终止还是非正常终止,都会存在一个资源释放的问题,在posix中提供了一组,就是我们上面看的函数进行线程退出的处理函数,有些像在进程中的atexit函数。释放的方式是指pthread_cleanup_push的调用点到pthread_cleanup_pop之间程序段进行终止。
    pthread_cleanup_push()/pthread_cleanup_pop采用先入后出的方式的栈的管理方式,void *rtn(void *),在执行pthread_cleanup_push()时压入函数栈,多次执行pthread_cleanup_push()形成一个函数链,在执行这个函数链的时候会以反方向弹出,即先入后出。execute参数表识,是否执行弹出清理函数,当execute=0时不进行弹出清理函数,非零的时候弹出处理函数。
    例程9
    程序目的:实现在正常结束线程的时候,进行函数处理
    程序名称:pthread_clean.c
 /********************************************************************************************
**    Name:pthread_clean.c
**    Used to study the multithread programming in Linux OS
**    A example showing a thread to be cleaned.
**    Author:zeickey
**    Date:2008/6/28       
**    Copyright (c) 2006,All Rights Reserved!
*********************************************************************************************/
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void *clean(void *arg)
{
    printf("cleanup :%s  \n",(char *)arg);
    return (void *)0;
}
void *thr_fn1(void *arg)
{
    printf("thread 1 start  \n");
    pthread_cleanup_push( (void*)clean,"thread 1 first handler");
    pthread_cleanup_push( (void*)clean,"thread


相关文档:

【Linux桌面应用】Linux服务配置过程

1)关闭防火墙
#service iptables stop<enter> \\关闭防火墙
#chkconfig iptables off<enter> \\关闭开机启动
2)IP地址的配置
①命令方式
#netconfig<enter>  \\设置IP地址、子网掩码、网关、DNS
#vi /etc/sysconfig/network \\主机名
#hostname XXX   \\设置主机名称
#exit  ......

嵌入式Linux下彩色LCD驱动的设计与实现

嵌入式Linux下彩色LCD驱动的设计与实现
摘要:本文介绍了如何在嵌入在开发彩色LCD显示驱动的方法,并对Linux中的显示驱动程序结构和框架作一介绍。
    长期以来,在常见的掌上电脑(PDA)等小型手持式设备上,由于硬件条件等的限制,我们看到的显示器件通常是单色LCD,用户界面也非常简单,几乎看不到 PC ......

linux文件系统中检测U盘挂载全权讲解

里学习linux文件系统技巧,挂载U盘是否连接的技巧,文中以案例讲解。望能给大家带来小小的帮助。
Linux文件系统是异步的,也就是说写一个文件不是立刻保存到介质(硬盘,U盘等)中,而是存到缓冲区内,等积累到一定程度再一起保存到介质中。如果没有umount就非法拔出 U盘,程序是不知道的,fopen,fwrite等函数都依然返回正 ......

初学Linux积累。

2009-10-27
1,重启 reboot
2009-10-28
1,忘记了root用户密码的解决帮
启动后按esc进入修复模式,选择修复,并选择最后一个。root,进去后,更改密码:passwd root
然后根据提示输入两次密码就行了。
2009-10-29
1,ls
    ls -a 查看所有文件
    ls -l 查看详细的属性
 &nbs ......

Linux操作系统下的多线程编程详细解析(3)


3、线程标识
    函数原型:
   
#include <pthread.h>
pthread_t pthread_self(void);
pid_t getpid(void);
    getpid()用来取得目前进程的进程识别码,函数说明
    例程8
    程序目的:实现在新建立的线程中打印该线程的id和进 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号