上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页

Linux系统编程—有名管道

摘要: ▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式。 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区,大小4K; 管道创建以后会产生两个文件描述符,一个是读端,另一个是写端; 管道里的数据只能从写端被写 阅读全文
posted @ 2020-10-09 21:27 良许Linux 阅读(621) 评论(0) 推荐(0) 编辑

Linux系统编程 —共享内存之mmap

摘要: 共享内存概念 共享内存是通信效率最高的IPC方式,因为进程可以直接读写内存,而无需进行数据的拷备。但是它没有自带同步机制,需要配合信号量等方式来进行同步。 共享内存被创建以后,同一块物理内存被映射到了多个进程地址空间,当有一个进程修改了共享内存的数据,其余的进程均可看见所修改的内容,反之亦然。 mm 阅读全文
posted @ 2020-10-08 19:38 良许Linux 阅读(768) 评论(0) 推荐(0) 编辑

Linux系统编程—信号集操作函数

摘要: 先来回顾一下未决信号集是怎么回事。 信号从产生到抵达目的地,叫作信号递达。而信号从产生到递达的中间状态,叫作信号的未决状态。产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集,mask)对应位被置1。阻塞信号集和未决信号集均是由内核维护的,整个过程如下图示: 我们有时需要屏蔽 阅读全文
posted @ 2020-10-07 11:54 良许Linux 阅读(715) 评论(0) 推荐(1) 编辑

Linux系统编程 —时序竞态

摘要: ##时序竞态 什么是时序竞态?将同一个程序执行两次,正常情况下,前后两次执行得到的结果应该是一样的。但由于系统资源竞争的原因,前后两次执行的结果有可能得到不一样的结果,这个现象就是时序竞态。 ##pause函数 函数原型: int pause(void); 函数作用: 进程调用pause函数时,会造 阅读全文
posted @ 2020-10-05 17:04 良许Linux 阅读(470) 评论(0) 推荐(0) 编辑

Linux系统编程 —线程属性

摘要: 在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性。一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题。 但是,有时项目中我们对线程会有些特殊的要求,比如修改线程栈的大小,直接调用线程的库函数无法满足需求,在这种 阅读全文
posted @ 2020-10-03 14:00 良许Linux 阅读(782) 评论(0) 推荐(1) 编辑

git 一个可以提高开发效率的命令:cherry-pick

摘要: 各位码农朋友们一定有碰到过这样的情况:在develop分支上辛辛苦苦撸了一通代码后开发出功能模块A,B,C,这时老板过来说,年青人,我们现在先上线功能模块A,B。你一定心里一万只草泥马奔腾而过,但为了混口饭吃必须得按老板的意思办事啊。 怎么办?一个办法就是,重新建一个分支,然后再把功能模块C回退,留 阅读全文
posted @ 2020-09-29 20:18 良许Linux 阅读(859) 评论(1) 推荐(2) 编辑

Linux系统编程 —互斥量mutex

摘要: ##互斥量mutex 前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。 互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁后才可以 阅读全文
posted @ 2020-09-27 21:06 良许Linux 阅读(4399) 评论(0) 推荐(0) 编辑

Linux系统编程 —读写锁rwlock

摘要: 读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。 读写锁的特性为:写独占,读共享;写锁优先级高。对于读写锁,掌握了这12个字就足矣了。 Linux环境下,读写锁具有以下三种状态: 读模式下加锁状态 阅读全文
posted @ 2020-09-26 17:49 良许Linux 阅读(2780) 评论(0) 推荐(1) 编辑

Linux系统编程—条件变量

摘要: 条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。 当条件满足的时候,线程通 阅读全文
posted @ 2020-09-25 20:08 良许Linux 阅读(1720) 评论(0) 推荐(0) 编辑

Linux系统编程—信号量

摘要: 大家知道,互斥锁可以用于线程间同步,但是,每次只能有一个线程抢到互斥锁,这样限制了程序的并发行。如果我们希望允许多个线程同时访问同一个资源,那么使用互斥锁是没有办法实现的,只能互斥锁会将整个共享资源锁住,只允许一个线程访问。 这种现象,使得线程依次轮流运行,也就是线程从并行执行变成了串行执行,这样与 阅读全文
posted @ 2020-09-23 19:35 良许Linux 阅读(626) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页