来源 UNIX 网络编程(第二版) 管道 是一种广泛的IPC形式,即可在程序中使用,也可在shell中使用。管道的问题在于它们只能在具有共同祖先的进程中使用,不过该问题已随有名管道即FIFO的引入而解决了。 消息队列 同步机制 需要某种同步形式,往往是为了防止多进程同时修改同一文件 记录上锁 信号量 ...
分类:
其他好文 时间:
2019-10-21 13:34:03
阅读次数:
82
sem mutex=1;//取号机互斥信号量 sem empty=10;//空余座位信号量 sem full=0;//已占座位信号量 sem service=0//等待叫号数量 顾客() { p(empty); p(mutex); 取号 v(mutex); v(full); p(service); ... ...
分类:
其他好文 时间:
2019-10-20 19:38:08
阅读次数:
77
回到主线程 延时执行 开启一个异步线程 开启一个同步线程 线程优先级 分组执行 串行队列:只有一个线程,加入到队列中的操作按添加顺序依次执行。 并发队列:有多个线程,操作进来之后它会将这些队列安排在可用的处理器上,同时保证先进来的任务优先处理。 信号量 oc中dispatch_group_enter ...
分类:
编程语言 时间:
2019-10-18 19:21:49
阅读次数:
134
select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。 select的轮询机制是系统会去查 ...
分类:
其他好文 时间:
2019-10-18 16:03:50
阅读次数:
86
互斥锁 互斥锁的特性: 1. 原子性:当有一个线程成功拿到了这个锁,其他线程都无法在相同的时间拿到这个锁 2. 唯一性:在一个线程拿到锁的这段时间,只有当这个线程把锁释放掉,其他的线程才有可能拿到 3. 非繁忙等待性:如果一个线程已经锁定了一个互斥量,第二个线程又视图去拿到这个锁的前线,则第二个锁将 ...
分类:
其他好文 时间:
2019-10-15 21:21:06
阅读次数:
124
IPC 信号 一、信号的定义 1、用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。 2、信号是UNIX/Linu ...
分类:
其他好文 时间:
2019-10-15 19:30:16
阅读次数:
99
一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数是 ...
分类:
其他好文 时间:
2019-10-13 10:57:56
阅读次数:
94
1.将要执行的代码写到类的构造函数中,并定义对应的全局变量2.将要执行的代码写到TLS回调函数中在c/c++中,我们都知道main函数是程序开始执行的地方,但是在进行反调试的时候,很多时候都需要调试检测函数在main函数之前执行。 1.将要执行的代码写到类的构造函数中,并定义对应的全局变量在wind ...
基础概念 一、进程、程序和线程 程序:程序只是一堆代码而已 进程:指的是程序的运行过程,是对正在运行程序的一个抽象。进程是一个资源单位 线程:每个进程有一个地址空间,而且默认就有一个控制线程。线程才是cpu上的执行单位 二、并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是 ...
分类:
编程语言 时间:
2019-10-02 21:00:50
阅读次数:
132
Semaphore用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。计数信号量还可以用来实现某种资源池,或者对容器施加边界。 Semaphore可以用于实现资源池。例如数据库连接池。我们可以构造一个固定长度的资源池,当池为空时,请求资源将会失败,但你真正希望看到的行为是阻塞而不 ...
分类:
其他好文 时间:
2019-10-02 00:29:07
阅读次数:
77