头文件 #include <pthread.h>
编译和链接时需要加上-lpthread。
1、创建线程pthread_create()
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
返回值:成功时,返回 0, 失败时返回错误码。
2、在线程函数中调用pthread_exit()来退出线程执行
void pthread_exit(void *retval);
3、取消另一个线程pthread_cancel()
int pthread_cancel(pthread_t thread);
功能:向一个线程发送取消请求。
描述:pthread_cancel() 函数向一个线程发送一个取消请求。目标线程什么时候回应以及回不回应取决于线程的两个属性:cancelability state 和 type.
线程的 cancelability state 取决于 pthread_setcancelstate(3),这个属性可以被设置为 enabled 和 disabled. 如果一个线程的 cancelability state 属性是 enabled 的,那么一个此时该线程如果接收到取消请求才有效。发送成功并不意味着线程会终止。
若是在整个程序退出时,要终止各个线程,应该在成功发送 cancel 指令后,使用 pthread_join()函数,等待指定的线程硬完全退出之后,再继续执行;否则,很容易产生“段错误”。
返回值:成功则返回0,不成功则返回非0 。
4、等待一个线程的结束pthread_join()
int pthread_join(pthread_t thread, void **retval);
描述:pthread_join()函数,以阻塞的方式等待thread指定的线程结束,当函数返回时,被等待的线程资源被收回。如果线程已经结束,那么该函数会立即返回,并且thread指定的线程必须是joinable的。
是线程间同步的操作。
返回值:成功则返回0,不成功则返回错误码。
5、向线程发送一个信号pthread_kill()
int pthread_kill(pthread_t threadId, int signal);
返回值:成功返回0,失败返回失败码。
6、获取线程ID pthread_self()
pthread_t pthread_self(void);