Linux编程-线程篇1

Linux线程

线程:cpu进行执行任务与调度的最小单位

进程:系统进行资源分配和调度的基本单位

二者之间的差别是:线程存在于进程之中,一个进程可以有多个线程,同一个进程中的所有线程都共享内存空间。不同进程之间拥有不同的内存空间,线程的切换比进程的切换要快得多。

孤儿进程:父进程先释放,而子进程还未执行完毕。

僵尸进程:子进程执行完毕,但是父进程还未执行完毕,同时父进程没有接收到子进程执行停止的信号,从而导致子进程已经终止,但是依然占据着内存空间不释放阻塞着的进程。

进程是用fork()来创建的。

线程是用pthread_create()来创建的。

线程创建函数必须在函数内给定线程需要执行的任务。

线程中也有和进程的wait/waitpid功能类似的函数。

在线程中主要使用的是pthread_join函数和pthread_detach函数。

在使用pthread_detach的时候要配合pthread_exit()一起执行,在二者之间包含的是需要执行的线程任务,这个函数不会阻塞线程,不管线程怎么样了,都能有返回值。

在进程运行的过程中,访问内存空间的数据,以及线程运行过程中需要访问进程的内存空间,等等在有些时候需要进行通信同步。

在进程中有管道,消息队列,fifo,共享内存、信号量等。

在线程中主要使用互斥同步量,信号量等。

select模型

为了提高物理设备的效率,用最少得物理要素传递最多数据时使用的技术。

select模型主要是使用了轮询一样的机制,一个服务器只需要一个进程就可以处理n个客户端,通过将所有客户端套接字放进一个队列,然后服务器循环遍历询问所有客户端,进行监听,如果有需要进行连接的客户端则进行连接并处理相关事务。

epoll模型

epoll的实现机制是通过内核与用户空间共享一个事件表,这个事件表中存放着所有需要监控的文件描述符以及它们的状态,当文件描述符的状态发生变化时,内核会将这个事件通知给用户空间,用户空间再根据事件类型进行相应的处理。

边缘触发和水平触发

LT模式又称水平触发,ET模式又称边缘触发。

LT模式只不过比ET模式多执行了一个步骤,就是当epoll_wait获取完就绪队列epoll事件后,LT模式会再次将epoll事件添加到就绪队列。

LT模式多了这样一个步骤会让LT模式调用epoll_wait时会一直检测到epoll事件,直到socket缓冲区数据清空为止。

ET模式则只会在缓冲区满足特定情况下才会触发epoll_wait获取epoll事件。

相关推荐
大树88几秒前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 分钟前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush430 分钟前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52044 分钟前
Linux 11 动态监控指令top
linux
小宇宙Zz1 小时前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩2 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈2 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟3 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
凡人叶枫3 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦4 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw