seven——seven
这个作者很懒,什么都没留下…
展开
-
C语言之线程邮箱
前言熟悉多线程编程的同学都知道,当我们为了避免资源竞争时,需要加锁和解锁,而频繁的加锁和解锁必定会造成资源的损耗和开销,所以线程邮箱应运而生。一、线程邮箱是什么?简单来说,线程邮箱就是模拟收发邮件的形式,使线程任务不在主动争抢共享资源,只是检查自己的“邮箱”看是否有别的任务对自己有资源的传递。二、线程邮箱的组成及构造构造:线程邮箱的基本组成是以链表的形式将每个线程任务串联起来,而每个节点中不仅要有自己线程所负责的任务还有自己的“邮箱”(以队列的形式),所以每个邮箱中待处理的任务节点需要包含发原创 2021-10-07 14:40:19 · 9063 阅读 · 0 评论 -
数据结构——哈希表
哈希存储(散列存储) 多考虑查找经过特殊处理(哈希函数)映射到某一个位置上记录下的数据---->哈希函数(f(key))----->存储位置哈希冲突:当经过计算不能每个都完全散列存储好处:如果哈希冲突较少的话相比于数组寻找是有提高的(以O(1)复杂度)如何尽可能避免哈希冲突的产生:解决方法:1.开放地址法当经过计算映射到相同位置时,检测到这个位置已经存储到数据时,从这个位置向下去找没有存储数据的单元2.链地址法在哈希表中,不再进行原记录的一个存储,而是存储原纪录要存原创 2021-10-07 14:35:06 · 632 阅读 · 0 评论 -
数据结构——链表专项
数据结构的总结1.定义 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中, 并在此基础上实现某个特定的功能的操作;程序 = 数据结构 + 算法 高内聚,低耦合2.数据与数据之间的关系数据的逻辑结构:数据元素与元素之间的关系集合:关系平等线性结构:元素之间一对一的关系(表,队列。栈。。。)树型结构:元素之间一对多的关系(二叉树)图形结构:元素之间多对多的关系(网状结构)数据的物理结构:...原创 2021-10-07 14:17:50 · 92 阅读 · 0 评论 -
进程线程基本概念
1.1进程与线程的基本概念1.1.1什么是进程,线程,彼此有什么区别进程:一个程序动态执行的过程,包括创建、调度、消亡。是cpu资源分配的基本单位。线程:是进程的一部分,位于进程内部,被称为轻量级进程,是cpu任务调度的基本单位。区别:地址空间和资源:进程拥有一个完整的0-4g的虚拟地址空间,每个进程资源独立,切换调度任务时资源开销大;线程没有独立的地址空间,栈空间独立,其余空间均与其他线程共享,其轻量,切换调度任务时效率更高。 通信:进程间通信IPC,较为复杂;线程间通...原创 2021-10-07 13:37:34 · 159 阅读 · 0 评论 -
并发,同步,异步,互斥,阻塞,非阻塞的理解
1.1.9一个进程可以创建多少线程,和什么有关系统参数限制:虽然 Linux 并没有内核参数来控制单个进程创建的最大线程个数,但是有系统级别的参数来控制整个系统的最大线程个数。进程的虚拟内存空间上限:因为创建一个线程,操作系统需要为其分配一个栈空间,如果线程数量越多,所需的栈空间就要越大,那么虚拟内存就会占用的越多。1.2.1什么是线程同步和互斥同步:线程间的同步指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它原创 2021-10-07 13:52:33 · 259 阅读 · 0 评论 -
多进程多线程通讯
1.1.4多进程、多线程同步(通讯)的方法多进程:(1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(2)有名管道:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。(3)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。(4)消息队列:消息队列是由.原创 2021-10-07 13:45:15 · 256 阅读 · 0 评论