摘要: 等待一个时间或其他条件 在一个线程等待完成任务时,会有很多选择: 1. 它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一个线程完成工作时对这个标志进行重设。缺点:资源浪费,开销大 2. 在等待线程的检查间隙,使用std::this_thread::sleep_for()进行周期性的间 阅读全文
posted @ 2019-09-02 17:02 断_水_流 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 共享数据带来的问题:条件竞争 避免恶性条件竞争的方法: 1. 对数据结构采用某种保护机制,确保只有进行修改的线程才能看到修改时的中间状态。从其他访问线程的角度来看,修改不是已经完成了,就是还没开始。 2. 对数据结构的设计进行修改,修改完的结构必须能完成一系列不可分割的变化,也就是保证每个不变量保持 阅读全文
posted @ 2019-08-30 16:35 断_水_流 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 多进程并发:将应用程序分为多个独立的进程,它们在同一时刻运行。如图所示,独立的进程可以通过进程间常规的通信渠道传递讯息(信号、套接字、。文件、管道等等)。 优点:1.操作系统在进程间提供附附加的保护操作和更高级别的通信机制,意味着可以编写更安全的并发代码。 2. 可以使用远程连接的方式,在不同的机器 阅读全文
posted @ 2019-08-29 16:12 断_水_流 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 前面的随笔介绍了Google Test中的基本测试单元TEST和测试夹具TEST_F,此篇介绍区别于这两种测试的参数化测试TEST_P 当待测试方法的行为取决于传入的参数时,而且这些参数的不同组合有多种, 而你又不想为此写多个相类似的test case时,可以用value-parameterized 阅读全文
posted @ 2019-04-23 14:30 断_水_流 阅读(2138) 评论(0) 推荐(0) 编辑
摘要: 此篇主要了解一下GoogleTest中的断言。 总的来说,GoogleTest中的断言分为两大类:EXPECT_*和ASSERT_*,这两者在测试成功或失败后均会给出测试报告,区别是前者在测试失败后会继续执行下面的测试,而后者在测试失败后会立即终止测试。 GoogleTest中的比较断言,涉及整型, 阅读全文
posted @ 2019-04-22 18:34 断_水_流 阅读(1308) 评论(0) 推荐(0) 编辑
摘要: 在进行测试过程中,待测的类或者方法经常会依赖其他类或方法的实现。如果此时这些依赖还没有实现,则需要打桩。另外测试讲求独立,测试之间的互相依赖会导致测试最终混乱不堪。 GoogleMock提供一套方法来快速的实现打桩,并让打桩的类或者方法轻松的按照你的要求来进行一系列动作。 现在有一个还没实现具体方法 阅读全文
posted @ 2019-04-20 13:08 断_水_流 阅读(2400) 评论(3) 推荐(0) 编辑
摘要: 单元测试是一种保证代码质量的手段。程序员可以通过写单元测试来保证自己写的代码的功能正确。 本人所在公司使用GoogleTest测试框架来进行单元测试。虽然现在在公司的工程代码中写单元测试已经驾轻就熟,但是只是知其然不知其所以然,所以再此对Google Test测试框架进行一个全面的了解与学习。 本文 阅读全文
posted @ 2019-04-18 19:16 断_水_流 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 前序遍历 [144] Binary Tree Preorder Traversal 递归遍历 使用递归,先保存父节点的值,再对左子树进行遍历(递归),最后对右子树进行遍历(递归) vector<int> preorderTraversal(TreeNode* root) { vector<int> 阅读全文
posted @ 2019-04-16 16:36 断_水_流 阅读(290) 评论(0) 推荐(0) 编辑