Linux
e我所欲也
在很窄的胡同里长跑
展开
-
并发服务器 IO多路复用之poll 与 epoll(重点)
文章目录I/O多路复用之pollpoll函数接口poll示例: 使用poll监控标准输入(模式)I/O多路复用之epollepoll_create 创建epoll操作句柄epoll_ctl epoll的事件注册函数epoll_wait 监控epoll工作原理epoll的优点(和 select 的缺点对应)epoll工作方式epoll示例: 使用epoll监控标准输入(水平触发LT模式)epoll示例2: 使用epoll监控标准输入(边缘触发ET模式)I/O多路复用之pollpoll函数接口#i原创 2020-06-23 16:47:16 · 1023 阅读 · 0 评论 -
并发TCP服务器 IO多路复用之select
文章目录前言初识selectselect函数原型理解select执行过程socket就绪条件select使用示例: 检测标准输入输出select优缺点基于select的并发TCP服务器通信前言记得我们之前写的TCP客户端服务端通信小demo中有个小问题:accept函数和read函数一旦阻塞在其中一个中的话,另一个就没法对相应的请求做出响应,即如果在accept中等待一个连接请求,我们就不能响应输入的命令(接收数据)。类似地,如果在read中等待一个输入命令,我们就不能响应任何连接请求。但是一个并发服务原创 2020-06-23 11:58:43 · 1370 阅读 · 0 评论 -
linux --线程(六) 读写锁
文章目录读写者介绍读写锁读写锁接口读写者介绍读者一写者问题是互斥问题的一个概括。一组并发的线程要访问一个共享对象,例如一个主存中的数据结构,或者一个磁盘上的数据库。有些线程只读对象,而其他的线程只修改对象。修改对象的线程叫做写者。只读对象的线程叫做读者。写者必须拥有对对象的独占的访问,而读者可以和无限多个其他的读者共享对象。一般来说,有无限多个并发的读者和写者。读者一写者交互在现实系统中...原创 2020-04-30 14:34:13 · 901 阅读 · 0 评论 -
linux --线程(五)线程池模型
文章目录线程池(thread pool)线程池组成部分线程池生产者消费者模式示例线程池(thread pool)一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内...原创 2020-04-29 11:47:14 · 418 阅读 · 0 评论 -
linux --线程(四)posix信号量
文章目录信号量介绍posix信号量信号量如何来实现同步与互斥信号量与互斥锁之间的区别信号量介绍之前我们在进程间通信中也讲到过system V 信号量–>《信号量及pv操作》先列出用于同步的三种信号量1.System V信号量(在内核中维护):可用于进程或线程间的同步。2.Posix有名信号量(在内核中维护):使用PosixIPC名字标识(通过特定函数,调用一个绝对文件路径名作为参...原创 2020-04-21 12:38:25 · 878 阅读 · 0 评论 -
linux --线程(三)线程同步之条件变量
文章目录线程同步条件变量生产者消费者模型线程同步上一篇文章中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,但是互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量...原创 2020-04-16 11:57:34 · 642 阅读 · 3 评论 -
linux -- 线程(二) 线程安全中的互斥量
文章目录前言再谈可重入与线程安全如何保证线程安全互斥互斥锁互斥量的接口使用死锁前言线程的数据处理: 和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变量常常带...原创 2020-04-14 18:28:46 · 929 阅读 · 2 评论 -
linux --线程(一 ) 线程基本概念及线程管理
文章目录线程引言线程特征线程具体概念线程基本概念线程是什么?从内核角度去分析进程与线程的比较总结进程ID和线程ID线程管理线程创建线程ID及进程地址空间布局线程终止线程等待线程分离线程绑定了解线程概念,理解线程与进程区别与联系。线程引言问题:为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?相比于多进程,多线程是一种非常"节俭"的多任务操作...原创 2020-04-09 12:41:00 · 1059 阅读 · 0 评论 -
linux--进程信号
文章目录信号引入信号基本概念信号的分类信号的产生信号的注册与注销注册注销信号处理信号处理的可能情况处理信号的方法信号阻塞信号捕捉(执行自定义处理函数)重入与竞态条件SIGCHLDvolatile关键字进程间通信与线程间通信之间的关系?狭义上的进程间通信其实是指分属于不同进程的线程之间的通讯.而单个进程之间的线程同步问题可归并为一种特殊的进程通信.它要用到内核支持的系统调用来保持线程之间同步....原创 2020-03-26 13:52:55 · 2072 阅读 · 2 评论 -
linux--进程间通信(管道与系统V IPC)
文章目录进程间通信目的进程间通信的种类管道管道的实现与本质匿名管道文件描述符属性的设置命名管道System V IPCSystem V 共享内存System V 消息队列System V 信号量进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时间里...原创 2020-03-20 20:51:06 · 2437 阅读 · 1 评论 -
linux--动态库静态库 、软硬链接
文章目录动态库与静态库概念linux静态库linux动态库软硬链接理解硬链接理解软链接动态库与静态库概念在之前我们学习程序编译的时候,源文件在经过预处理、汇编、编译后生成目标文件,最后一步链接,就是对 之前的声明去实现,合并目标文件、库文件,合并符号表/符号表的重定位,最终生成可执行程序。其中的库文件是什么呢?库通俗的说就是把一些常用的公用函数的目标文件打包在一起制作成的函数库,提供相...原创 2020-03-16 12:45:20 · 1031 阅读 · 0 评论 -
linux--文件理解及基础IO
文章目录复习C文件与IO相关操作什么是文件文件类型与存储文件缓冲区文件指针常用c文件IO接口及操作系统文件IO文件描述符理解文件描述符的分配规则理解重定向使用 dup2 系统调用文件描述符和文件流指针的关系复习C文件与IO相关操作什么是文件计算机中的文件是以计算机硬盘为载体存储在计算机上的信息集合。文件可以是文本文档、图片、程序等等。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文...原创 2020-03-15 11:21:50 · 1775 阅读 · 0 评论 -
linux--进程理解
文章目录冯诺依曼体系结构操作系统概念与定位进程概念特征与PCB基本概念:进程特征程序与进程的区别进程的描述-PCB(process control block)通过系统调用创建进程-fork初识进程状态环境变量程序地址空间冯诺依曼体系结构我们常见的计算机,如笔记本。我们不常见的计算机,如大型服务器,大部分都遵守冯诺依曼体系。冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并...原创 2020-03-11 12:08:20 · 2712 阅读 · 0 评论 -
Linux 基础开发工具的使用(yum 、编辑器、编译器、调试器)
文章目录Linux 软件包管理器 yumyum 语法yum常用命令yum注意事项Linux编辑器-vim使用vi/vim 的基本模式vim正常模式中的命令集vim末行模式命令集Linux编译器-gcc/g++使用程序编译过程gcc如何完成函数库概念Linux调试器-gdb使用调试命令Linux 软件包管理器 yum软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对...原创 2020-03-05 16:00:27 · 2719 阅读 · 0 评论 -
Linux -基础命令篇(常见指令与权限理解)
ls 指令(ls:List files)语法: ls [选项][目录或文件名]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k ...原创 2020-02-23 00:24:38 · 3059 阅读 · 3 评论 -
shell以及运行原理简述
文章目录shell概念shell核心操纵执行方式shell概念Shell本身是一个用C编写的程序,它是用户在Unix/Linux之间的桥梁,用户通过Shell完成大部分工作。Shell既是一种命令语言,又是一种编程语言。作为一种命令语言,它交互式地解释和执行用户类型的命令。作为一种编程语言,它定义了各种变量和参数,并提供了在高级语言中可以找到的许多控制结构,包括循环和分支。虽然它不是Unix/...原创 2020-02-22 22:44:21 · 1760 阅读 · 0 评论