- 博客(48)
- 收藏
- 关注
转载 Linux线程创建与终止
线程概念线程指程序的一个执行流,也可理解为是进程内部的一个控制序列,任何进程都至少含有一个线程。如下图所示:在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。为了让进程完成一定的工作,进程必须至少包含一个线程。进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是
2020-05-13 17:43:43
317
转载 Linux进程间通信3
共享内存概念共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。图解:共享内存的特点:1)共享内存是进程间共享数据的一种最快的方法。一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容2)使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥。若一个进程正在向共享内存区写数据,则在
2020-05-12 20:32:02
87
转载 LINUX进程间通信2
命名管道概念:无名管道,由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道、FIFO文件。命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相互通信,因此,通过FIFO不相关的进程也能交换数据。命名管道(FIFO)和无名管道(pipe)区别1、FIFO 在文件系统中作为一个特殊的文件而
2020-05-12 17:01:17
112
原创 队列实现
方法顺序队列和循环队列的比较定义节点#define MAXsize 100;typedef int DATAType;typedef struct { DATAType _data[MAXsize]; int front; int tail;}queue;void Initqueue(queue *queue){/*初始化*/ assert(queue); queue->front=queue->tail=NULL;}void queueIN(queue
2020-05-08 19:29:23
114
原创 双向链表
链表分类单向链表双向链表双向循环链表定义节点typedef int DataTypetypedef struct{ DataType _elm; struct Node* _next; }Node,*pNode这段代码目的就是重新命名(使其简化)以下方法为不考虑头结点的单向链表/*初始化*/...
2020-05-08 17:32:03
105
原创 平衡二叉树
平衡二叉树算法先举例说明如何将非平衡二叉树转换成平衡二叉树:图a一颗空树也算是平衡二叉树图b 只有一个结点13的树也算是平衡二叉树图c 在图b的基础上插入新的结点24之后,仍然是平衡二叉树,只是根结点的平衡因子从0变到了-1(左子树的深度为0减去右子树的深度1等于-1)图d 在图c的基础上再插入一个结点37,这个时候整棵树出现了不平衡现象,根结点13的平衡因子从-1变成了-2。我们想要...
2020-05-08 11:51:14
225
原创 类和对象1
内容:1 再谈构造函数2 c++11的成员初始化新玩法3 友元4 static成员5 内部类6 再次理解封装一。1.1 构造函数的赋值:创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初值。虽然上述构造函数调用后,对象已经有一个初始值。 但不能将其称为类对象成员的初始化。构造函数体中的语句只能将其称为赋初值,而不能称为初始化。 因为初始化只能初始化一次...
2019-06-03 17:20:50
181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅