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事件。

相关推荐
yuxb7319 分钟前
Linux 文本处理与 Shell 编程笔记:正则表达式、sed、awk 与变量脚本
linux·笔记·正则表达式
刘一说31 分钟前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
wdxylb6 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20077 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪8 小时前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝8179 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
Lovyk10 小时前
Linux 正则表达式
linux·运维
Fireworkitte11 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil90011 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char11 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos