Linux多线程
线程的创建和退出
1 |
|
thread是传入参数,保存新进程的标识
attr是一个结构体指针,可用pthread_attr_init初始化,一般为NULL
start_routine是一个函数指针,指向新线程入口点函数,线程入口点函数带有一个void*的参数由pthread_create的第4个参数传入
arg用于传递给第三个参数指向的入口点函数的参数,可以为NULL,表示不传递 # 线程的等待退出
# 线程的取消1
2
3
4
int pthread_join(pthread_t th,void **thread_return);
//thread_return是一个传出参数,接收线程的返回值
//若前程使用pthread_exit()终止,该函数内参数则为返回值int pthread_cancel(pthread_t thread);
根据POSIX标准,pthread_join(),pthread_testcancel(),pthread_cond_wait(),pthread_cond_timedwait(),sem_wait(),sigwait(),read(),write()等会相应cancel信号
进程终止清理函数
1 | void pthread_cleanup_push(void(*v) |
线程的同步和互斥
互斥
1 |
|
//互斥锁属性 1
2
3typedef struct{
int __mutexkind;
}; ## 同步1
2
3int pthread_mutex_lock(pthread_mutex_t *mutex);//加锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);//解锁
int pthread_mutex_trylock(pthread_mutex_t *mutex);//测试加锁
1 |
|