赞
踩
1、 概念
进程内部的一条执行序列。 进程内部至少有一条执行线程。 即就是 main函数的执行体。 进程内部可以有多条线程, main 函数的线程称之为主线程, 其他线程称之为函数线程。 函数线程是由主线程通过系统调用函数创建的。
2、 与进程的区别:
①进程是资源分配的最小单位, 线程是调度(执行) 的最小单位
② 第七点
③ 线程切换比进程切换消耗小
3、 线程的分类
① 用户级: 在用户空间是多线程的, 内核只识别进程整体。 线程创建、 管理、 销毁都是由用户空间负责, 用户通过调用库函数在完成。
②内核级: 线程的创建、 控制、 销毁都是由内核实现的, 每个线程对内核都是可见的。
③组合模型: 一部分是用户级, 一部分内核级线程。 介于内核级和用户级之间, 用户态创建多个线程, 内核看到的也是多个, 只是这是种 m: n 的对应关系。
4、 线程的创建
头文件名称:#include “pthread.h”
int pthread_create(pthread_t *id, pthread_attr_t *attr,
void*(pthread_fun)(void), void *arg);
id : 线程的编号, 由系统自动填充;
pthread_attr-_t: 线程属性;//传递空为默认属性
pthread_fun: 线程创建以后所调用的函数地址;
arg: 传递给函数线程的参数。
5、int pthread_join(pthread_t id, void**p);函数
作用: 获取指定线程由 pthread_exit 设置的退出信息。
特性: pthread_join 函数会阻塞直到等待的线程退出。 (类比 进程控制中的 wait 函数)
6、函数线程一般传递的参数都是void类型,在函数线程中需要改成原来类型,需考虑值有没有发生改变。
7、 线程间的数据共享:
全局变量 共享
栈区数据 不共享
堆区 共享
文件: 共享 同一个进程的线程, 使用一个 PCB, 只要线程能拿到打开的文件的文件描述符, 就可以通过文件描述符操作文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。