多线程(1)线程创建,等待,结束等接口(Linux)

多线程(1)线程创建,等待,结束等接口(Linux)

  • 1. 线程创建-pthread_create
    • 1.1原型
    • 1.2 参数
    • 1.3 返回值
    • 1.4 -lpthread
  • 2. 线程等待-pthread_join
    • 2.1 原型
    • 2.2 参数
    • 2.3 返回值
  • 3. 线程结束-pthread_exit
    • 3.1 原型
    • 3.2 参数
  • 4. 获取当前线程ID-pthread_self
  • 5. 线程分离-pthread_detach
    • 5.1原型
    • 5.2 参数
    • 5.3 分离状态说明

1. 线程创建-pthread_create

1.1原型

int pthread_create(pthread_t * tid, const pthread_attr_t * attr, void * ( * func) (void * ), void * arg);

1.2 参数

  1. tid 线程变量名:pthread_t *类型,是标示线程的id,一般是无符号整形
  2. attr 线程的属性指针:制定线程的属性,比如线程优先*级,初始栈大小等,通常情况使用的都是指针。
  3. func 创建线程的名称:一般是函数指针,进程创建后执行该函数指针只想的函数。
  4. arg 线程参数:若线程执行的函数包含由若干个参数,需要将这些参数封装成结构体,并传递给它指针。

1.3 返回值

成功,返回0
出错,返回-1

1.4 -lpthread

在编译时注意加上-lpthread参数,以调用静态链接库。
因为pthread并非Linux系统的默认库。

2. 线程等待-pthread_join

2.1 原型

int pthread_join (pthread_t tid, void ** status);
功能:
这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。

1. 说明
线程创建后怎么执行,新线程和老线程谁先执行这些不是程序来决定,而是由操作系统进行调度的。
但是在编程的时候我们常常需要多个线程配合工作,比如在结束某个线程之前,需要等待另外一个线程的处理结果(返回状态等信息),这时候就需要使用线程等待函数

2.2 参数

  1. 第一个参数表示要等待的进程的id;
  2. 第二参数表示要等待的进程的返回状态,是个二级指针

2.3 返回值

0代表成功
失败,返回的则是错误号。

3. 线程结束-pthread_exit

3.1 原型

void pthread_exit (void *status);
功能: 终止调用它的线程

3.2 参数

参数是指针类型,用于存储线程结束后返回状态。

4. 获取当前线程ID-pthread_self

pthread_t pthread_self (void);
用于返回当前进程的ID

5. 线程分离-pthread_detach

5.1原型

int pthread_detach (pthread_t tid);
指定的ID的线程变成分离状态

5.2 参数

参数是指定线程的ID

5.3 分离状态说明

  1. 若指定线程是分离状态,则如果线程退出,那么它所有的资源都将释放
  2. 若指定线程不是分离状态,线程必须保留它的线程ID、退出状态,直到其他线程对他调用的pthread_join()函数

你可能感兴趣的:(多线程)