UNIX环境高级编程(阅读笔记)---线程相关函数

线程汇总:

1.#include<pthread.h>

线程头文件,链接出错是加上-lpthread,因为pthread不是Linux中默认的库。

2.pthread_t  pthread_self()

返回自身的线程ID,C中输出可以指定格式%lu。

3.int pthread_create(pthread_t * restricttidp,const pthread_attr_t * restrict attr,void *(*start_rtn)(void *)),void *restrict arg)

若创建成功返回0,失败则返回错误编号。创建一个线程,通过指针传递线程ID传值给tidp,attr用于指定各种不同的线程属性,线程从函数指针start_rtn所指向的函数开始执行,该函数有一个万能指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要将这些参数放到一个结构体中,然后把这个结构的地址作为arg的参数传入。一下三种代码传递方式。

代码一:

  UNIX环境高级编程(阅读笔记)---线程相关函数_第1张图片

代码二:

UNIX环境高级编程(阅读笔记)---线程相关函数_第2张图片


4.void thread_exit(void *rval_ptr)

线程的退出,参数rval_ptr是一个无类型的指针

5.int pthread_join(pthread_t tid,void **rval_ptr)

调用该函数时会一直阻塞到对应的线程调用pthread_exit或者返回。如果指定线程简单的返回,那么rval_ptr简单的返回返回码,如果线程被取消,那么rval_ptr指向的内存单元被设置为PTHREAD_CANCELED。

大部分时候如果对线程的返回值不感兴趣,将rval_ptr设置为NULL。

6.int pthread_cancel(pthread_t tid);

调用该函数来取消同一进程中的其他线程。

线程与进程的一些函数对比

进程原语

线程原语

描述

Fork

Pthread_create

创建新的控制流

exit

Pthread_exit

退出

waitpid

pthread_join

从控制流中得到退出状态

atexit

Pthread_cancel_push

退出时该执行的函数

getpid

Pthread_self

获取控制流ID

abort

Pthread_cancel

请求控制流非正常退出

 


 

 

你可能感兴趣的:(UNIX环境高级编程(阅读笔记)---线程相关函数)