Posix编程随笔

原创 2006年06月08日 14:52:00
很少用的两个函数:
pthread_cleanup_push((void *)routine, (void *)args);
pthread_cleanup_pop(int execute);
看到这两个函数第一印象应该是push和pop,没错这两个函数的使用和压栈出栈过程一样的。pthread_cleanup_push是指定一个函数routine及其参数args,这个routine在线程退出(不管是执行了pthread_exit还是其它情况)时执行,当然了,前提是没有pthread_cleanup_pop之前,该函数会取消最近一次push的routine,其参数execute为非0时在取消routine之前先执行routine,为0时不执行直接取消routine。

好了,既然明白了他们的意思,那什么时候使用他们呢?举个例子:
当一个线程执行一个pthread_mutext_lock()去锁定一个mutex并成功之后因为异常情况而退出时,那么这个mutex就没有被unlock,其它线程会再也lock锁不定这个mutex,造成其它线程也无法正常运行,这种现象是我们所不愿意看到的,这个时候前面所说的函数就有用武之地了:)在锁定一个mutex之前,先执行:
pthread_cleanup_push((void (*)(void *))pthread_mutex_unlock,  (void *)&mutex);
然后再锁定这个mutex:
pthread_mutex_lock(&mutex);
.
.
其它工作
.
.
.
pthread_mutex_unlock(&mutex);
pthread_cleanup_pop(0);

这样在执行“其它工作”的过程中线程意外退出,则mutex也不会因为它而一直处于lock状态!

2006.6.8

linux--posix多线程编程----第一篇

一   线程创建 1.1 线程与进程 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引...
  • u010358881
  • u010358881
  • 2015年09月25日 14:14
  • 588

Posix线程编程API简介

原文:http://baike.baidu.com/view/974776.htm http://zh.wikipedia.org/wiki/POSIX http://www.blogja...
  • hudashi
  • hudashi
  • 2012年07月02日 17:48
  • 2232

随笔:POSIX

POSIX
  • aquial
  • aquial
  • 2017年05月27日 17:18
  • 71

Linux/POSIX Socket编程 笔记1及反思

昨天深夜醒来,一时难以入睡,从书架上找来买了许久的《Internetworking with TCP/IP Volumn 3》,翻看起来。虽然目前只看了前6章,但感觉的确对Socket理解不够。可以说...
  • Yasker
  • Yasker
  • 2006年04月12日 18:45
  • 4339

操作系统标准接口设计POSIX

操作系统标准-POSIX----------------------------------------------------------------------------------------...
  • chinayaosir
  • chinayaosir
  • 2013年05月27日 01:49
  • 2823

嵌入式软件使用POSIX接口的优缺点

POSIX,即Portable Operating System Interface,即可移植操作系统接口。是操作系统为应用程序提供的接口标准。POSIX标准同样适用于嵌入式软件,这里总结一下嵌入式软...
  • zoomdy
  • zoomdy
  • 2016年02月04日 18:43
  • 1377

进程间通信笔记(6)—POSIX信号量

POSIX信号量简介。。。
  • zhangxiao93
  • zhangxiao93
  • 2016年09月19日 09:54
  • 849

2016新年随笔

前言 题外话:【我爱王梦】 生活:        高考时的失利,让我在很大的一段时间内都走不出来,那段时间真的不知道自己在想什么?又到底在做着什么?说真的,那段时间我感觉到了真正的孤独,没...
  • wangmeng951011
  • wangmeng951011
  • 2016年02月11日 12:02
  • 462

博客园首页新随笔联系管理订阅 随笔- 7 文章- 0 评论- 4 ElasticSearch 5.0.1 java API操作

博客园首页新随笔联系管理订阅 随笔- 7  文章- 0  评论- 4  ElasticSearch 5.0.1 java API操作   ...
  • gaoqiao1988
  • gaoqiao1988
  • 2016年12月25日 09:15
  • 612

寒假计划随笔

未来畅想      大三过半,已经到了为未来做打算的时候了。我打算不考研了,我认为本专业的实践能力比较重要,早些着手实践,工作一段时间以后有精力的话就准备考研,提升自己的知识储备。大学三年我的实践能...
  • yangyayan21
  • yangyayan21
  • 2018年01月20日 10:39
  • 33
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Posix编程随笔
举报原因:
原因补充:

(最多只允许输入30个字)