
linux/Unix环境高级编程
cyxHehui
这个作者很懒,什么都没留下…
展开
-
pthread_cancel引起的死锁
说明:本文由【2,3】整理而得。 这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。 目 录: 1. 一个 pthread_cancel 引起的线程死锁小例子 2. 取消点(Cancellation Point) 3.转载 2013-11-19 08:07:53 · 1136 阅读 · 0 评论 -
Linux多线程,基本概念
一、Linux多线程,基本概念 说明:以下内容,根据参考中【1~6】内容整理而得。 一、基本概念 1、线程是计算机中独立运行的最小单位。进程是分配资源的单位。 2、为什么使用多线程? (1)启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分转载 2013-11-19 08:26:18 · 769 阅读 · 0 评论 -
Linux多线程,线程的分离与集合
(2)线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了转载 2013-11-19 08:34:01 · 920 阅读 · 0 评论 -
线程的终止方式:pthread_cleanup_push, pthread_cleanup_pop()
以下内容根据【1】进行整理。关于取消点,将在后面进一步讨论。 1、一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。 2、线程终止时的清理 不论是可预见转载 2013-11-19 08:40:56 · 891 阅读 · 0 评论 -
linux 线程同步之条件变量
与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。 条件的检测是在互斥锁的保护下进行的。如果一个条件为翻译 2013-11-13 19:01:04 · 651 阅读 · 0 评论 -
linux线程同步之读写锁
读写锁与互斥量类似,不过读写锁的并行性更高。 读写锁可以有三种状态:(1)读模式加锁;(2)写模式加锁;(3)不加锁。 在写加锁状态时,在解锁之前,所有试图对这个锁加锁的线程都会被阻塞。在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权限。但是如果线程希望以写模式加锁,它必须阻塞,直至所有的线程释放读锁。 读写锁很适合于对数据结构读的次数远大于写的情况。 相关函数:原创 2013-11-13 19:54:46 · 4571 阅读 · 1 评论 -
posix_memalign详解
转载:http://hi.baidu.com/freelonely/blog/item/340341077c4d287302088189.html 预对齐内存的分配 在大多数情况下,编译器和C库透明地帮你处理对齐问题。POSIX 标明了通过malloc( ), calloc( ), 和 realloc( ) 返回的地址对于任何的C类型来说都是对齐的。在Linux中,这些函数返回的地址在转载 2013-11-22 22:04:55 · 6863 阅读 · 2 评论