pthread学习笔记(二)--pthread常用API及简单介绍

来源:互联网 发布:京东品类销售数据 编辑:程序博客网 时间:2024/06/05 09:50

经过了上篇文档的初步学习,对pthread有了一个简单的感性认识,但是对pthread的认识还是比较少,在这篇文档当中将要主要学习pthread的一些常用的API。

 

首先是pthread的线程创建API: pthread_create

当创建函数执行成功的时候返回0,并把创建的线程tid写入传入的线程指针中去(第一个参数),否则返回一个非零值并设置errno。

其中,第一个和第三个参数是必须要设置的,其他两个参数可以根据情况设置,当没有需求的时候传入NULL即可。

 

 

pthread_exit: 终止当前线程

 

 

pthread_join:挂起当前线程直到指定的线程终止为止(这个函数对于pthread十分重要,正如上一篇文档中所说的,不调用该函数可能会造成后续的create失败的问题)。

 

pthread_cancel: 撤销一个线程

 

 

线程属性:(上文中create函数的第二个参数,类型为pthread_attr_t,可以使用pthread_attr_XXXX函数族调用)

 

detachstate:分离或者切入状态,有两个值PTHREAD_CREATE_JOINABLE(default value),PHTREAD_CREATE_DETACHED

 

schedpolicy:  调度策略,取值有: SCHED_OTHER, SCHED_FIFO

 

schedparam:  调度策略相关

 

inheritsched: PTHREAD_EXPLICIT_SCHED(default value), PTHREAD_INERIT_SCHED

 

scope: 时间片,取值有:PTHREAD_SCOPE_SYSTEM(default value每个线程 一个系统时间片), PTHREAD_SCOPE_PROGCESS(线程共享系统时间片)。

 

 

pthread cleanup宏

 

pthread cleanup宏主要用来处理线程的推出状态,pthread_exit和pthread_join等可以作为它的参数

 

互斥mutex

由于线程是并发执行的,因此有时候需要对一些数据进行保护,例如多线程标准输出如果不加以处理,那么输出基本上都会是乱码,此时就可以使用mutex对输出流进行控制,一个线程执行写入操作的时候,加一把互斥锁,以防别的线程同时写入。

 

互斥对象在pthread中的定义为pthread_mutex_t,以下是它的一些API函数:

 

条件变量

线程使用条件变量对象来阻塞自己以等待某个特定条件的发生。

条件对象的定义为pthread_cond_t

 

至此,基本的pthread的API函数就学习到这里了,在后续的学习当中,将会结合例子更深入的学习。

 

原创粉丝点击