2021年5月26日
摘要: 当涉及到共享数据时,问题很可能是因为修改共享数据所导致。如果共享数据是只读的,那么只读操作不会影响到数据,所以所有线程都会获得同样的数据。但是,当一个或多个线程要修改共享数据时,就会产生很多麻烦。 不变量:双链表中每个节点都有一个指针指向列表中下一个节点,还有一个指针指向前一个节点。其中不变量就是: 阅读全文
posted @ 2021-05-26 14:49 天官赐福 阅读(232) 评论(0) 推荐(0)
摘要: 第2章讨论了C++标准库中基本的线程管理方式:启动线程,等待结束和不等待结束(因为需要它们运行在后台)。并了解应该如何在线程启动前,向线程函数中传递参数,如何转移线程的所有权,如何使用线程组来分割任务。最后,讨论了使用线程标识来确定关联数据。 整章目录如下: 2 管理线程 2.1 基本线程管理 2. 阅读全文
posted @ 2021-05-26 14:05 天官赐福 阅读(45) 评论(0) 推荐(0)
摘要: 每个线程都有唯一的线程标识,其类型是 std::thread::id ,可以通过两种方式进行获取。第一种,可以通过调用与线程相关联的std::thread 对象的成员函数 get_id() 来直接获取。第二种,在当前线程中调std::this_thread::get_id()来获取。如果 std:: 阅读全文
posted @ 2021-05-26 13:56 天官赐福 阅读(76) 评论(0) 推荐(0)
摘要: 下例实现了一个并行版的 std::accumulate 。代码中将整体工作拆分成小任务交给每个线程去做,其中设置最小任务数,是为了避免产生太多的线程。 template<typename Iterator, typename T> struct accumulate_block { void ope 阅读全文
posted @ 2021-05-26 11:40 天官赐福 阅读(72) 评论(0) 推荐(0)