POSIX多线程API函数

头文件 #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);

猜你喜欢

转载自blog.csdn.net/xunye_dream/article/details/110314858
今日推荐