内核级线程被内核调度、用户级线程被用户调度、混合式线程
创建pthread线程 pthread_create()
- 成功返回thread所指位置并返回0,否则返回一个错误号
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
-
thread: 指向线程标识符的指针,为无符号长整形
attr: 指向定义新线程特性结构的指针,默认NULL
start_routine: 此线程只执行这一个函数
arg: 传递给start_routine的参数
pthread_join()
- 从原来的线程获得新线程的返回值。成功返回0,否则返回错误码
#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);
- thread是pthread_create获得的线程标识符。将thread的返回值存入retval所指位置
撤销线程
#include <pthread.h>
int pthread_cancel(pthread_t thread); //别的线程中被调用。很少使用,无法让线程清理自己资源机会
void pthread_exit(void *retval); //线程内被调用
- 还可以用exit(),主函数return结束,信号(例SIGTERM)终止线程