添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
【Linux编程】之多线程Pthread

【Linux编程】之多线程Pthread

-------------------------常用函数-----------------------------

1.pthread_self 获取线程号

2.pthread_equal 判断线程号是否一致

3.pthread_create 创建线程

3.pthread_join 回收线程

4.pthread_detach 线程分离

5.pthread_exit 线程退出

----------------------线程属性----------------------

typedef struct pthread_attr_t 线程结构体

1.pthread_attr_init 初始化线程结构体

2.pthread_attr_setscope 设置线程竞争范围

3.pthread_attr_setdetachstate 设置分离属性

---------------------线程优先级策略----------------------

Linux内核的三种调度策略:

1.pthread_attr_setschedpolicy 修改线程策略

2.pthread_attr_setschedparam 设置优先级

3.pthread_attr_getschedparam 得到线程优先级


简介:

1) 线程是轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone

2) 从内核里看进程和线程是一样的,都有各自不同的PCB.

3) 进程可以蜕变成线程

4) 在linux下,线程最是小的执行单位;进程是最小的分配资源单位

注意

进程:如果复制对方的地址空间,那么就产出一个“进程;

写时拷贝,读时共享

线程:如果共享对方的地址空间,就产生一个“线程”。

共享的资源

1) 文件描述符表

2) 每种信号的处理方式

3) 当前工作目录

4) 用户ID和组ID

非共享资源

1) 线程id

2) 处理器现场和栈指针(内核栈)

3) 独立的栈空间(用户空间栈)

4) errno变量

5) 信号屏蔽字

6) 调度优先级

常用函数使用方法

1.pthread_self 获取线程号

头文件:
#include <pthread.h>
pthread_t pthread_self(void);
   获取一个线程号(tid)
   该函数永远成功,并返回一个线程号

2.pthread_equal 判断线程号是否一致

头文件:
#include <pthread.h>
int pthread_equal(pthread_t t1, pthread_t t2);
   判断线程号 t1  t2 是否相等。
   线程1tid,线程2tid
   相同返回非0,不同返回0 

3.pthread_create 创建线程

头文件:
#include <pthread.h>
函数:
int pthread_create(pthread_t *thread,
            const pthread_attr_t *attr,
            void *(*start_routine)(void *),
            void *arg );
   创建一个工作线程,并指定其工作的回调函数以及传入参数
   pthread_t: 线程tid,即线程号
   pthread_attr_t:线程设置参数的结构体,不关心设置为NULL即可,详细设置请看后面