linux线程函数总结

来源:互联网 发布:域名 daddy 编辑:程序博客网 时间:2024/06/04 20:11

pthread_t pthread_self(void);

功能:获取线程ID,其作用对应进程中 getpid() 函数;成功返回线程ID,失败没有值,

int pthread_create(pthread_t*thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void*arg);

功能:创建一个线程,返回值:成功:0;       失败:错误号         -----Linux环境下,所有线程特点,失败均直接返回错误号

参数:

参数1:传出参数,保存系统为我们分配好的线程ID

        参数2:通常传NULL,表示使用线程默认属性。若想使用具体属性也可以修改该参数

         参数3:函数指针,指向线程主函数(线程体),该函数运行结束,则线程结束。

         参数4:线程主函数执行期间所使用的参数。

注意:使用线程时记得下载线程库,因为线程是linux后来加上去的,运行程序时记得链接线程库-lpthread;


void pthread_exit(void *retval);

功能:将单个线程退出

参数:retval表示线程退出状态,通常传NULL

退出的函数作用:

return:返回到调用者那里去。

         pthread_exit():退出单个线程                   

         exit: 将进程退出。


int pthread_join(pthread_t thread, void **retval);

功能:阻塞等待线程退出,获取线程退出状态 ,回收子线程             其作用,对应进程中waitpid() 函数。

成功:0;失败:错误号

参数:thread:线程ID ;retval:存储线程结束状态


int pthread_detach(pthread_tthread);  

功能:实现线程分离

成功:0;失败:错误号

线程分离状态:指定该状态,线程主动与主控线程断开关系。线程结束后,其退出状态不由其他线程获取,而直接自己自动释放。网络、多线程服务器常用;也可使用pthread_create函数参2(线程属性)来设置线程分离

注意:不能对一个已经处于detach状态的线程调用pthread_join,这样的调用将返回EINVAL错误



int pthread_cancel(pthread_t thread);

功能:杀死(取消)线程           其作用,对应进程中kill() 函数。

成功:0;失败:错误号


注意:线程的取消并不是实时的,而有一定的延时。需要等待线程到达某个取消点(检查点);可以执行命令man 7pthreads可以查看具备这些取消点的系统调用列表


int pthread_equal(pthread_t t1,pthread_t t2);

功能:比较两个线程ID是否相等

成功:0;失败:错误号



线程属性:

线程属性结构体详解:

typedef struct

{

int                                        etachstate;    //线程的分离状态

int                                        schedpolicy;   //线程调度策略

struct sched_param         schedparam; //线程的调度参数

int                                        inheritsched; //线程的继承性

int                                        scope;             //线程的作用域

size_t                                  guardsize;      //线程栈末尾的警戒缓冲区大小

int                                          stackaddr_set;//线程的栈设置

void*                                   stackaddr;      //线程栈的位置

size_t                                  stacksize;       //线程栈的大小

} pthread_attr_t; 


属性值不能直接设置,须使用相关函数进行操作,初始化的函数为pthread_attr_init,这个函数必须在pthread_create函数之前调用。之后须用pthread_attr_destroy函数来释放资源。

intpthread_attr_init(pthread_attr_t *attr); 

功能:初始化线程属性

成功:0;失败:错误号

int pthread_attr_setdetachstate(pthread_attr_t *attr, intdetachstate); 

功能:设置线程是否分离;

参数:   attr:已初始化的线程属性

detachstate:       PTHREAD_CREATE_DETACHED(分离线程)

PTHREAD _CREATE_JOINABLE(非分离线程)


intpthread_attr_destroy(pthread_attr_t *attr); 

功能:销毁线程属性所占用的资源

成功:0;失败:错误号




















原创粉丝点击