linux线程管理

线程原语:

pthread_attr_init  线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化
pthread_attr_destroy
pthread_create     创建新的线程pthread_self       获取线程id
pthread_exit       从线程中退出
pthread_join       以阻塞的方式等待thread指定的线程结束
pthread_cancel     正常退出线程
pthread_detch      使线程进入分离状态
pthread_cleanup_push 用来设置在push/pop内线程退出时要做的事情
pthread_cleanup_pop

pthread_self(void) // 获取线程id

pthread_cond_wait  条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起

 pthread_cond_wait会先解除之前的pthread_mutex_lock锁定的mtx,然后阻塞在等待对列里休眠,直到再次被唤醒(大多数情况下是等待的条件成立而被唤醒,唤醒后,该进程会先锁定先pthread_mutex_lock(&mtx);,再读取资源

pthread_cond_signal 

pthread_cond_init

pthread_cond_destroy

pthread_cond_signal唤醒等待该条件的某个线程,pthread_cond_broadcast唤醒等待该条件的所有线程。

线程同步:

互斥锁
条件变量是利用线程间共享的全局变量进行同步的一种机制
信号灯与互斥锁和条件变量的主要不同在于"灯"的概念,灯亮则意味着资源可用,灯灭则意味着不可用
异步信号 LinuxThreads是在核外使用核内轻量级进程实现的线程,所以基于内核的异步信号操作对于线程也是有效的。但同时,由于异步信号总是实际发往某个进程,所以无法实现POSIX标准所要求的"信号到达某个进程,
   然后再由该进程将信号分发到所有没有阻塞该信号的线程中"原语,而是只能影响到其中一个线程

线程状态
1.新建状态  创建新线程,还没开始运行线程中代码
2.就绪状态  线程等待CPU调度
3.阻塞状态  挂起
4.运行状态  获取cpu 正在执行
5.死亡状态  线程退出

posted on 2014-05-05 13:40  kangbry  阅读(738)  评论(0编辑  收藏  举报

导航