Linux 线程的同步与互斥
线程的互斥 在Posix Thread中定义了一套专门用于线程互斥的mutex函数。mutex是一种简单的加锁的方法来控制对共享资源的存取,这个互斥锁只有两种状态(上锁和解锁),可以把互斥锁看作某种意义上的全局变量。为什么需要加锁,就是因为多个线程共用进程的资源,要访问的是公共区...
线程的互斥 在Posix Thread中定义了一套专门用于线程互斥的mutex函数。mutex是一种简单的加锁的方法来控制对共享资源的存取,这个互斥锁只有两种状态(上锁和解锁),可以把互斥锁看作某种意义上的全局变量。为什么需要加锁,就是因为多个线程共用进程的资源,要访问的是公共区...
TCP特点 面向连接 字节流 可靠传输 关于TCP 使用TCP通信的双方必须先建立连接,然后才能开始数据的读写。 双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。 TCP连接是全双工的,双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须...
关键段 概述 critical section是一小段代码,它在执行之前需要独占对一些共享资源的访问权。 这种方式可以让多行代码以“原子方式”来对资源进行操控。 这里的原子方式,是指除了当前线程之外,没有其他任何线程会同时访问该资源。 当然,系统仍然可以暂停当前线程去调度其他线程...
命令标记 命令分隔符 用于分隔单行上的多个命令 块分隔符 圆括号 一对大括号 ( { } ) 用于包围调试器命令程序中的语句块 方括号 用于访问数组元素或表示寄存器或内存位置 别名解释器 用户别名(以$开头) 用户别名只能在当前调试会话中使用 例如:$myalias 全局别名(以...
概述 是 Windows 操作系统中的虚拟内存页面文件,其作用、管理方式及对系统的影响是系统性能优化的核心内容 核心作用 物理内存的扩展 当物理内存(RAM)不足时,Windows 会将不活跃的数据从 RAM 转移到 pagefile.sys 中,释放 RAM 给当前活跃程序使用...
文件描述符 内核为每个进程维护一个已打开文件的记录表,文件描述符是一个较小的正整数(0—1023),它代表记录表的一项,通过文件描述符和一组基于文件描述符的文件操作函数,就可以实现对文件的读、写、创建、删除等操作。 常用基于文件描述符的函数有open(打开)、creat(创建)、...
概述 信号是由用户 、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 Linux信号产生条件: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。 比如Ctrl+C通常会给进程发送一个中断信号。 系统异常。 比如浮点数异常和非法内存段访问。 ...
异常的产生 CPU执行程序汇编代码时,发现了异常,然后把异常告诉了操作系统。 操作系统首先会让程序自身处理这个异常。 如果程序自身有能力处理,程序就继续运行。 有能力是值程序中有注册的异常处理函数。 如果程序没能力处理,这个异常还没被处理,操作系统就会来处理,操作系统就会提示用户...
用户模式同步 Interlocked 系列函数 原理 通过 CPU 原子指令(如 LOCK XCHG)直接操作内存,无需进入内核态 场景 简单计数器(如引用计数) 无锁数据结构(如无锁队列) 特点 性能极高(无内核切换) 仅支持单个变量的原子操作,无法实现复杂同步 临界区(Cri...
A库调用B库funcD函数,却触发了B库funcB函数的断点 简述 A库是个DLL,B库是个lib A库里面某个类继承了接口类 B类里面继承了接口类 原因 A库项目使用了B库生成的lib静态库 A库的IInterface.h少了几个函数,和B库的IInterface.h内容不一样...
搜索当前分类