摘要: 介绍 lambda 表达式是一种匿名函数,即没有函数名的函数。语法定义为: [capture] (parameters) mutable ->return-type {statement} 其中: [capture]:捕捉列表。是lambda表达式的开始标志。编译器根据它识别接下来是否是lambda 阅读全文
posted @ 2019-07-30 20:47 Austin_anheqiao 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一、补充知识 1、虚假唤醒 wait中要有第二参数(lambda)并且这个lambda中要正确判断要处理的公共数据是否存在 wait,notify_ont/notify_all notify_all(),一个线程取到了数据,另一个线程唤醒了但是取不到数据了(容器为空),这就是虚假唤醒 2、atomi 阅读全文
posted @ 2019-07-30 17:34 Austin_anheqiao 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 一、windows临界区 类似于互斥量 == 临界区。 二、多次进入临界区 进入临界区(加锁); 离开临界区(解锁); 同一个线程中windows中相同临界区变量代表的临界区进入(entercirticalsection)可以被多次调用(多次进入),别忘了进了几次,就离开临界区几次。c++11不允许 阅读全文
posted @ 2019-07-30 16:54 Austin_anheqiao 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 一、原子操作 g++; g+=1; g = g+1;//结果不对 一般原子操作针对++,--,+=,&=,|=,^=是支持的,其他的可能不支持 二、std::async深入 用来创建异步任务。 1、async参数 延迟调用:std::launch::defered 强制创建一个线程 std::lau 阅读全文
posted @ 2019-07-30 16:24 Austin_anheqiao 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 用一个双端队列,队首是当前窗口最大值索引。 滑动一次,判断当前最大值是否过期; 新增的值从尾开始比较,把所有比他小的值都丢掉。 例如{2,3,4,2,6,5,1,3,2},窗口3 deque max 2 {0} 2 23 {1} 3 234 {2} 4 此时队列长度达到3,开始输出第一个窗口的最大值 阅读全文
posted @ 2019-07-30 15:12 Austin_anheqiao 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 构造两个堆,左大顶堆,右小顶堆。 如果奇数,中位数就是做大顶堆的root;如果是偶数,中位数就是两个顶堆root的平均值 阅读全文
posted @ 2019-07-30 13:44 Austin_anheqiao 阅读(125) 评论(0) 推荐(0) 编辑