线程的创建和退出
1 2 3 4 5 6 7 8 9
| #include<pthread.h> int pthread_create(pthread_t* thread,pthread_attr_t* attr,void *(*start_routine)(void *),void* arg); void pthread_exit(void *retval);
pthread_t pthid; pthread_create(&pthid,NULL,pthfunc,NULL); thread_create(&pthid,NULL,pthfunc,(void*)3); pthread_exit(NULL); pthread_exit((void*)3);
|
thread是传入参数,保存新进程的标识
attr是一个结构体指针,可用pthread_attr_init初始化,一般为NULL
start_routine是一个函数指针,指向新线程入口点函数,线程入口点函数带有一个void*的参数由pthread_create的第4个参数传入
arg用于传递给第三个参数指向的入口点函数的参数,可以为NULL,表示不传递
# 线程的等待退出
1 2 3 4
| #include<pthread.h> int pthread_join(pthread_t th,void **thread_return);
|
# 线程的取消
int pthread_cancel(pthread_t thread);
根据POSIX标准,pthread_join(),pthread_testcancel(),pthread_cond_wait(),pthread_cond_timedwait(),sem_wait(),sigwait(),read(),write()等会相应cancel信号
进程终止清理函数
1 2 3 4
| void pthread_cleanup_push(void(*v) void pthread_clean_pop(int execute);
|
线程的同步和互斥
互斥
1 2 3 4
| #include<pthread.h> int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *mute);
pthread_mutex_destroy();
|
//互斥锁属性
1 2 3
| typedef struct{ int __mutexkind; };
|
1 2 3
| int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex);
|
## 同步
1 2 3 4 5 6 7 8 9 10
| #include<pthread.h> int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *cond_attr);
int pthread_cond_destroy(); int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t * mutex); int pthread_cond_timedwait(pthread_cond_t *cond,pthread_mutex_t * mutex,const struct timespec *abstime); pthread_cond_signal();
pthread_cond_broadcats();
|
预览: