Linux|Linux线程

线程 线程是操作系统能够调度和执行的基本单位,在 Linux 中也被称之为轻量级进程(LWP:light weight process),在 Linux 系统中,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源比如 cpu、内存、文件,将线程分配到某个 cpu 上执行
一个进程可以拥有多个线程,它还可以同时使用多个cpu 来执行各个线程,以达到最大程度的并行,提高工作的效率。
线程的本质是一个进程内部的一个控制序列,它是进程里面的东西,一个进程可以拥有一个进程或者多个进程
Linux|Linux线程
文章图片

总结:
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|Linux线程
文章图片

    推荐阅读