C++

C++并发编程 _ 同步并发(Future)

C++并发编程 _ 同步并发(Future) 2

bingliaolong 5年前 17 0

一次性事件 C++标准库模型将这种一次性事件称为期望future 当一个线程需要等待一个特定的一次性事件时,在某种程度上来说它需要知道这个事件在未来的表现形式。之后,这个线程会周期性的等待或检查,事件是否出发 在检查期间也会执行其他任务,直到对应的任务触发,而后等待期望的状态会变...

C++并发编程_同步并发(Condition_variable)

C++并发编程_同步并发(Condition_variable)

bingliaolong 5年前 11 0

等待事件或其他条件 如果一个线程正等待着第二个线程完成一项任务,它有几个选择。 可以一直检测共享数据(由互斥量保护)中的标识,并且让第二个线程在完成任务时设置该标识。 浪费资源 使用std::this_thread::sleep_for(),让等待的线程在检查之间休眠一会儿 得到...

STL_stack

STL_stack

bingliaolong 5年前 3 0

概述 stack是一种先进后出的数据结构,它只有一个出口。 stack允许新增元素,移除元素,取得最顶端元素。 SGI STL以deque作为缺省情况下的stack底层数据结构。 而stack是以底部容器完成其所有工作,具有这种“修改某物接口,形成另一种风貌”的性质的,称为配接器...

STL_deque

STL_deque

bingliaolong 5年前 3 0

概述 vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。 所谓双向开口,是指可以在头尾两端分别做元素的插入和删除操作。 区别 和vector相比: deque运行常数时间内对起头端进行元素的插入和移除操作 deque没有所谓的容量的概念,因为他是动...

C++并发编程 _ 共享数据

C++并发编程 _ 共享数据

bingliaolong 5年前 7 0

概述 如果我们在线程间共享数据,我们需要设置规则,哪个线程可以访问数据的哪一位,什么时间以及如何将更改传达给关心数据的其他线程。 关键点 问题 从整体上来看,所以线程之间共享数据的问题,都是修改数据导致的。如果所有的共享数据都只读的,就没有问题,因为一个线程所读取的数据不受另一个...

C++并发编程 _管理线程

C++并发编程 _管理线程

bingliaolong 5年前 9 0

介绍 每个C++进程都拥有至少一个线程,它是由C++在运行时启动的。该线程运行着main()函数。 我们自己的程序可以继续启动具有其他函数作为入口的线程。然后,这些线程连同初始线程一起,并发运行。 正如程序会在main()函数返回时退出那样,当指定的入口函数返回时,该线程就会退出...

C++并发编程_概念了解

C++并发编程_概念了解 2

bingliaolong 5年前 11 0

什么是并发 概念 在最简单,最基本的层面,并发是指两个或更多的独立活动同时发生。 计算机的并发 指的是在单个系统里,同时执行多个独立的活动,而不是顺序地或是一个接一个地。 两种并发 任务切换 以前,大多数计算机都只有一个处理器,具有单个处理单元或核心,至今有很多机器仍是这样。 对...

STL_list

STL_list 3

bingliaolong 5年前 2 0

节点 迭代器 list迭代器必须有能力指向list的节点,并有能力进行正确的递增、递减、取值、成员存取等操作。 重要性质: 插入(insert)和结合(splice)都不会造成原有的list迭代器失效。 数据结构 SGI list不仅是一个双向链表,而且是一个环状双向链表。 示意...

STL_vector

STL_vector

bingliaolong 5年前 4 0

区别 array是静态空间,一旦配置了就不能改变。 vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。 摘要 迭代器 vector维护的是一个连续线性空间,所以不论其元素型别为何,普通指针都可以作为vector的迭代器而满足所有必要条件 因为vect...

STL_内存处理工具

STL_内存处理工具

bingliaolong 5年前 4 0

简述 STL定义有5个全局函数,作用于未初始化空间上。 construct destory uninitialized_copy 该函数能使我们将内存的配置与对象的构造行为分离开来 针对输入范围[first,last)内的每一个迭代器i 该函数会调用construct(&...

扫一扫二维码分享