不同的平台和操作系统上 进程和线程的实现机制不完全一致但是一般来说线程栈都是独立的 只要得到地址就可以相互访问 Pthread是 POSIX threads 的简称,是POSIX的线程标准。 前几篇博客已经能给你初步的多线程概念,在进一步学习线程同步等多线程核心知识之前,需要对多线程深入的理...
分类:
编程语言 时间:
2014-11-17 17:42:36
阅读次数:
170
正在实现一个线程池的pthread包装器,突然发现有人在讨论关于http://blog.csdn.net/Solstice/article/details/5238671 是一篇比较老的文章,考虑了下 我在实现线程池包装器的时候会不会出现文章说的析构函数销毁mutex的问题最后得出一个结论 在线程池...
分类:
编程语言 时间:
2014-11-17 15:41:43
阅读次数:
130
了解 pthread_cond_wait() 的作用非常重要 -- 它是 POSIX 线程信号发送系统的核心,也是最难以理解的部分。首先,让我们考虑以下情况:线程为查看已链接列表而锁定了互斥对象,然而该列表恰巧是空的。这一特定线程什么也干不了 -- 其设计意图是从列表中除去节点,但是现在却没有节点。...
分类:
其他好文 时间:
2014-11-15 11:23:30
阅读次数:
176
一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。线程终止的同步及...
分类:
编程语言 时间:
2014-11-15 11:19:43
阅读次数:
183
在多线程程序里,我们有可能经常遇到因为函数使用的静态变量无法为不同的线程保存各自的值的问题。有很多办法可以解决,本文就来看一下通过线程特定数据来解决这样的问题。
每个系统支持有限的线程特定数据元素。POSIX要求这个限制不小于128(每个进程)。系统为每个进程维护一个我们称之为key结构的结构数组,如图:
key结构中的标志指示这个数据元素是否正在使用,所有的标志初始化为“不在使用”。当一个线...
分类:
编程语言 时间:
2014-11-14 14:17:28
阅读次数:
286
题目描述:警察和小偷被手铐绑在一起,需要共同逃亡100m,手铐长度3m。可以参考 生产者消费者模型线程问题,理解线程,多线程运行环境为pthreads-w32 release 2.8.0+codeblocks,pthread在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用P...
分类:
其他好文 时间:
2014-11-13 18:50:47
阅读次数:
271
#include#include#include#include#includevoid*consumer(void*p){ sleep(10);//这句代码,主要是为了测试用的,说白了就是等到所有线程创建完毕后,在输出线程标识符 printf("(%lu) %lu\n",pthr...
分类:
编程语言 时间:
2014-11-13 14:33:38
阅读次数:
310
lienhua342014-11-091 线程属性概括POSIX 线程的主要属性包括 scope 属性、detach 属性、堆栈地址、堆栈大小、优先级。在头文件 pthread.h 中定义了结构体pthread_attr_t 来记录线程的属性。在创建线程的函数pthread_create 的第二个参...
分类:
编程语言 时间:
2014-11-10 01:02:30
阅读次数:
248
#include int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); Link with -pthread. 对于这个函数,主要在于abs_timeout这个参数。一开始我以为...
分类:
其他好文 时间:
2014-11-09 17:48:44
阅读次数:
382
多线程经常会在Linux的开发中用到,我想把平时的使用和思考记录下来,一是给自己做个备忘,二是分享给可能会用到的人。 POSIX标准下互斥锁是pthread_mutex_t,与之相关的函数有:1 int pthread_mutex_init(pthread_mutex_t * mutex , ...
分类:
编程语言 时间:
2014-11-08 23:19:56
阅读次数:
293