摘要:
互斥量常用来做线程间同步,不过,我们可以恰当设置其属性实现进程间同步 互斥量类型为pthread_mutexattr_t,使用pthread_mutexattr_init函数来初始化,使用pthread_mutexattr_setpshared来设置pshared属性,进程锁属性设置为PTHREAD 阅读全文
摘要:
linux下进程退出有8中方式 这里区分一下exit和_exit exit 我们知道父进程要wait子进程的退出状态,在子进程退出到父进程调用wait()期间,子进程就处于僵尸状态。因此,exit()将进程正常退出,并将(status & 0377)返回到父进程的wait(),其中status可以是 阅读全文
摘要:
霍夫曼树是二叉树的一种特殊形式,又称为最优二叉树,其主要作用在于数据压缩和编码长度的优化。 概念 路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 树的路径长度 从 阅读全文
摘要:
进程在其声明周期内,由于系统中各个进程之间的相互制约关系及系统的运行环境的变化,使得进程的状态也在不断发生变化,即一个进程会经历不同的状态 五种状态 1. 运行状态 进程在处理器上运行。在单处理器环境下,同一时刻只有一个进程在运行 2. 就绪状态 进程处于准备运行的状态。进程获得了除处理器之外的所有 阅读全文
摘要:
在linux下,创建进程可以使用两个glibc函数,分别是 fork, vfork fork fork函数用来创建一个子进程,声明如下: #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork函数,一次调用,两次返回。在父进 阅读全文
摘要:
c++类成员的访问权限有三种,分别是 public, protected, private(默认)。其中private表示只允许在类内访问,使用这个特点,我们可以实现一些特殊作用的函数 私有构造函数 不能直接创建对象,单例模式往往使用这个方式 私有析构函数 析构函数被私有之后,就不能被自动析构,这样 阅读全文
摘要:
使用场景 需要全进程唯一实例时,往往会使用单例模式进行设计 唯一数据入口 假设一个对象负责更改本地设置,例如配置服务的网络端口号。如果出现两个或多个线程,每个线程拥有一个实例,线程并发共同进行配置。每个实例都在修改端口号。最终修改的结果就是不可控的。 共用的资源 现在我们假设有一个数据队列,由三个数 阅读全文
摘要:
设计模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns) 创建型模式 对象实例化的模式,这些模式可以在创建对象的同时隐藏创建逻辑的方式,可以解耦对象的实例化过程,包括: 工 阅读全文
摘要:
用法 grep在文件中查找匹配正则表达式的内容,默认打印出匹配的一行 选项 使用文件grp.txt为演示 -e PATTERN, 使用-e选项可以匹配多个条件 -f FILE, 从文件中获取PATTERN-i 忽略大小写-v 反向匹配,只选择未匹配的 -w 匹配整个单词-x 匹配整行 可以看到 -x 阅读全文
摘要:
观察者模式是对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 作用 将一个系统设计成一系列相互协作的类有一个常见的副作用:需要维护相关对象之间的一致性。 观察者模式定义一种交互: 使用场景 UML 参与者 CSubject: 目标,知道它的观察者, 阅读全文