Linux|Linux线程
线程 线程是操作系统能够调度和执行的基本单位,在 Linux 中也被称之为轻量级进程(LWP:light weight process),在 Linux 系统中,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源比如 cpu、内存、文件,将线程分配到某个 cpu 上执行
一个进程可以拥有多个线程,它还可以同时使用多个cpu 来执行各个线程,以达到最大程度的并行,提高工作的效率。
线程的本质是一个进程内部的一个控制序列,它是进程里面的东西,一个进程可以拥有一个进程或者多个进程
文章图片
总结:
1.一个程序至少有一个进程, 一个进程至少有一个线程。
2.线程使用的资源是进程的资源,进程崩溃线程也随之崩溃。
3.线程的上下文切换,要比进程更加快速,因为本质上,线程很多资源都是共享进程的,所以切换时,需要保存和切换的项是很少的
4.进程(process)和线程(thread):进程是资源管理的最小单位,线程是程序执行的最小单位
创建线程 【Linux|Linux线程】pthread_create函数
作用:创建一个线程
创建线程实际上就是确定调用该线程函数的入口点,在线程创建后,就开始运行相关的线程函数
#include int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
thread:指向线程标识符的指针
attr:设置线程属性
start_routine: start_routine 是一个函数指针,指向要运行的线程入口,
即线程运行时要执行的函数代码。
arg:运行线程时传入的参数
线程属性
在 Linux 中线程属性结构:
typedef struct
{ int etachstate;
//线程的分离状态
int schedpolicy;
//线程调度策略
structsched_param schedparam;
//线程的调度参数
int inheritsched;
//线程的继承性
int scope;
//线程的作用域
size_t guardsize;
//线程栈末尾的警戒缓冲区大小
int stackaddr_set;
//线程的栈设置
void* stackaddr;
//线程栈的位置
size_t stacksize;
//线程栈的大小
}pthread_attr_t;
线程的属性非常多,而且其属性值不能直接设置,须使用相关函数进行操作,线程属性主要包括如下属性:作用域(scope)、栈大小(stacksize)、栈地址(stackaddress)、优先级(priority)、分离
的状态(detachedstate)、调度策略和参数(scheduling policy and parameters)。默认的属性为非绑定、非分离、 1M 的堆栈大小、与父进程同样级别的优先级
pthread api
文章图片
推荐阅读
- Linux下面如何查看tomcat已经使用多少线程
- Beego打包部署到Linux
- 多线程NSOperation
- Linux|109 个实用 shell 脚本
- linux定时任务contab
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- day16-Linux|day16-Linux 软件管理
- spring|spring boot中设置异步请求默认使用的线程池
- 如何在阿里云linux上部署java项目
- Android中非UI主线程能不能操作UI()