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
2019-10-01 关键字:进程、线程、信号量、互斥锁 什么是程序? 程序就是存放在磁盘上的指令和数据的有序集合,就是源代码编译产物。 它是静态的。 什么是进程? 进程就是操作系统为执行某个程序所分配的资源的总称。进程是程序的一次执行过程,因此它与程序不同,它是动态的。它的生命周期包括创建、调度、 ...
分类:
编程语言 时间:
2019-10-01 16:01:47
阅读次数:
107
monitor概念 管程,监视器。在操作系统中,存在着semaphore和mutex,即信号量和互斥量,使用基本的mutex进行开发时,需要小心的使用mutex的down和up操作,否则容易引发死锁问题。为了更好的编写并发程序,在mutex和semaphore基础上,提出了更高层次的同步原语,实际上 ...
分类:
编程语言 时间:
2019-09-29 10:06:56
阅读次数:
178
在应用中,有时候会 依赖第三方模块执行方法,比如调用某模块的上传下载,数据库查询等操作的时候,如果出现网络问题或其他问题,可能有超时重新请求的情况; 目前的解决方案有 1. 信号量,但不支持window; 2.多线程,但是 如果是大量的数据重复操作尝试,会出现线程管理混乱,开启上万个线程的问题; 3 ...
分类:
编程语言 时间:
2019-09-28 14:56:44
阅读次数:
105
[TOC] 序言 我的上一篇文章介绍了信号量的基础知识并利用这些基础知识进行了一个小实验以此来增进对信号量这个概念的感性认识。下面我们要介绍一种特殊得信号量:互斥信号量 在介绍互斥信号量之前,我们先来谈谈一种现象:优先级反转。优先级反转在可剥夺型内核中是比较常见的,在实时系统中不允许出现这种现象,因 ...
分类:
其他好文 时间:
2019-09-28 00:45:04
阅读次数:
122
管道 管道是Linux支持的最草的IPC(进程间通信)方式,可以分为有名管道和无名管道 无名管道 1. 管道是半双工,只能支持单向流动,两个进程需要建立两个通道来进行通信 2. 无名管道通过pipe()函数创建,只能用于父子进程或者兄弟进程之间 3. 一个进程向管道中写数据,加入到管道缓冲区的尾部, ...
分类:
系统相关 时间:
2019-09-23 09:31:57
阅读次数:
90
'''一 信号量信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人 ...
分类:
其他好文 时间:
2019-09-20 21:15:16
阅读次数:
67
[toc] 线程同步锁、死锁、递归锁、信号量、GIL 一、同步锁 所有线程同一时间读写同一个数据,有的线程已经对数据进行修改了,造成有的线程拿到的数据时旧的数据,而不是修改后的数据,造成结果不正确,于是引入了同步锁解决问题, 同步锁的原理是同一时间只能有一个线程读写数据。 锁通常被用来实现对共享资源 ...
分类:
编程语言 时间:
2019-09-19 01:24:35
阅读次数:
94