曾格的github
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 快手一面的第三个算法题: 方法一:通过一个辅助栈实现在O(1)的时间内返回栈的最小值,但空间复杂度为O(n) 方法二:如何在O(1)的空间复杂度下找出最小值min:栈内不存储val,而是存储val-min 1 class MinStack { 2 public: 3 /** initialize y 阅读全文
posted @ 2021-09-18 18:13 曾格 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 虚假唤醒: 当 wait() 不带有第二个判断条件参数时会发生虚假唤醒的情况,所以wait()中尽量要带有第二个参数,并且这个lambda表达式要正确判断处理的公共数据是否存在。条件变量很重要,以后会经常用到。 atomic: std::atomic<int> atm = 0; cout << at 阅读全文
posted @ 2021-09-17 21:27 曾格 阅读(41) 评论(0) 推荐(0) 编辑
摘要: windows临界区 属于C++语法,可以跨平台。 Windows临界区,同一个线程是可以重复进入的,但是进入的次数与离开的次数必须相等。 C++互斥量则不允许同一个线程重复加锁。 RAII类:(Resource Acquisition is initialization)资源获取及初始化:构造函数 阅读全文
posted @ 2021-09-17 20:18 曾格 阅读(71) 评论(0) 推荐(0) 编辑
摘要: std::async深入理解,async 用来创建一个异步任务: std::async()我们一般不叫创建线程(他能够创建线程),我们一般叫它创建一个异步任务。 std::async和std::thread最明显的不同,就是 async 有时候并不创建新线程。 如果用std::launch::def 阅读全文
posted @ 2021-09-17 19:18 曾格 阅读(2170) 评论(0) 推荐(1) 编辑
摘要: std::atomic原子操作: 互斥量:多线程编程中 用于保护共享数据:先锁住, 操作共享数据, 解锁。 有两个线程,对一个变量进行操作,一个线程读这个变量的值,一个线程往这个变量中写值。 即使是一个简单变量的读取和写入操作,如果不加锁,也有可能会导致读写值混乱。 一条C++语句 i++ 会被拆成 阅读全文
posted @ 2021-09-17 18:58 曾格 阅读(197) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
Live2D