1、为什么需要线程池?部分应用程序需要执行很多细小的任务,对于每个任务都创建一个线程来完成,任务完成后销毁线程,而这就会产生一个问题:当执行的任务所需要的时间T1小于等于创建线程时间T2和销毁线程时间T3总和时即T1 <= T2 + T3,应用处理任务的响应能力会大大减弱,从而影响了应用程序性能,为...
分类:
编程语言 时间:
2015-06-29 11:35:56
阅读次数:
219
读写锁比mutex有更高的适用性,可以多个线程同时占用读模式的读写锁,但是只能一个线程占用写模式的读写锁。
1. 当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞;
2. 当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是以写模式对它进行枷锁的线程将阻塞;
3. 当读写锁在读模式锁状态时,如果有另外线程试图以写模式加锁,读写锁通...
分类:
编程语言 时间:
2015-06-26 11:07:10
阅读次数:
155
多线程中,在互斥量和 读写锁的 属性中,都有一个叫 进程共享属性 。对于互斥量,查询和设置这个属性的方法为:
pthread_mutexattr_getpshared
pthread_mutexattr_setpshared我一开始不理解什么是 进程共享属性。 看了man中的说明如下The pthread_mutexattr_getpshared() function shall obtai...
分类:
编程语言 时间:
2015-06-09 22:04:12
阅读次数:
175
linux下线程
线程与进程的关系:
之前转载的微信文章,进程与线程的区别已经说得比较清楚了,可以查看之前转载的文章,linux进程与线程的区别。
创建一个线程:
#include
int pthread_creat(pthread_t * thread,pthread_attr_t * attr,void *(*stat_routine)(void *),...
分类:
编程语言 时间:
2015-06-05 10:15:55
阅读次数:
184
linux线程私有的部分:每个线程都拥有一个独立的程序计数器,进程栈和一组进程寄存器linux进程切换时通过TSS段,TSS中的esp0和ss0都是系统初始化设置的,指向进程创建时候,分配的栈空间。当进程切换的时候,在内核态下才进行进程切换,在0.11版本中,当前进程的寄存器被压入当前进程的TSS中...
分类:
编程语言 时间:
2015-06-02 00:15:06
阅读次数:
166
http://www.ibm.com/developerworks/cn/linux/thread/posix_thread3/#1
当多线程想要等待某一条件成立时,用pthread_cond_wait来阻塞线程,
首先明确wait的作用,pthread的wait与lock都可以阻塞线程等待“条件”成立,区别在于:
wait之后的发送来的条件成立(pthread_cond_broad...
分类:
编程语言 时间:
2015-05-27 21:10:13
阅读次数:
130
线程属性属性值不能直接设置,须使用相关函数进行操作
初始化函数为pthread_attr_init,该函数必须在pthread_create函数之前调用typedef struct{
int detachstate; // 线程的分离状态
int scope; // 线程绑定状态
int schedpolicy; // 线程调度策略
struct sc...
分类:
编程语言 时间:
2015-05-16 10:35:55
阅读次数:
167
线程互斥机制Mutex变量就像一把“锁”,是线程同步和保护共享数据的主要方式
Mutex可以用来阻止竞争
Pthreads中Mutex的基本概念
在任何时候,只有一个线程能够获得Mutex
尽管几个线程想获取一个Mutex,但是只有一个线程能够成功
其他线程需要等待,直到获取Mutex的线程放弃Mutex
线程必须轮流访问需要保护的数据
线程经常利用mutex来加锁需要更新的全局变量,...
分类:
编程语言 时间:
2015-05-16 10:35:41
阅读次数:
253
1.进程:正在执行的程序,每个进程都有个id号2.线程:1.轻量级的进程2.进程有独立的地址空间,线程没有3.线程不能独立存在,他是有进程创建的(forck)threadlinux中,进程有两种发送存在,前台和后台前台:用户屏幕上可以进行操作的(vi编辑器)后台:进程实际在操作,但是屏幕上无法显示通...
分类:
编程语言 时间:
2015-05-14 00:39:42
阅读次数:
128
线程中互斥锁使用的步骤与信号量相似!1、首先定义互斥锁变量,并初始化pthread_mutex_t mutex_lock;pthread_mutex_init(&mutex_lock,NULL);2、在操作前对互斥量进行加锁操作pthread_mutex_lock(&mutex_lock);3、操作...
分类:
编程语言 时间:
2015-05-06 19:37:32
阅读次数:
171