Linux多线程程序设计

来源:互联网 发布:江大教务网络管理系统 编辑:程序博客网 时间:2024/06/06 08:12

Linux系统多线程遵循POSIX线程接口,称为pthread。Linux下多线程,需要头文件pthread.h,连接时需要使用库libpthread.a。

创建线程:int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,void *(*start_rtn)(void),void *arg)

tidp:线程id

attr:线程属性(通常为空)

start_rtn:线程要执行的函数,参数3:函数指针,返回值是void*

arg:start_rtn的参数

因为pthread的库不是linux的库,所以在编译时要加上-lpthread    #gcc filename -lphread   eg:gcc thread_create.c -lpthread -o thread

创建线程:eg:ret=pthread_create(&id1,NULL,(void*)mythread1,NULL);

带int参数:error=pthread_create(&id1,NULL,creat,(void *)attr)   执行的函数:void *create(void *arg) 参数:int *attr=&test

共享参数:error=pthread_create(&id1,NULL,creat,NULL)   执行的函数: void *create(void *arg) 

正常终止线程:线程从启动例程中返回;线程可以被另一个线程终止;线程自己调用pthread_exit函数

终止调用线程:void pthread_exit(void *rval_ptr)   rval_ptr:线程退出的返回值的指针

线程等待:int pthrread_join(pthread_t tid,void **rval_ptr)

功能:阻塞调用线程,直到指定的线程终止

线程标识:pthread_t pthread_self(void)

功能:获取调用线程的thread identifier,即返回线程的ID

线程清除(线程正常或非正常终止,释放资源)

pthread_cleanup_push(void (*rtn)(void*),void *arg)

功能:把清除函数压入清除栈,rtn:清除函数,arg:清除函数的参数

pthread_cleanup_pop(int execute)

功能:将清除函数弹出清除栈 execute:是否在弹出清理函数的同时执行该函数,非0:执行;0:不执行


0 0
原创粉丝点击