摘要: 目录 一、前言 (1)分治算法 (2)分治算法解题方法 1.分解: 2.治理: 3.合并 二、归并排序 1.问题分析 2.算法设计 (1)分解: (2)治理: (3)合并: 3.算法分析 三、AC代码 四、共勉 一、前言(1)分治算法 归并排序,其实就是一种分治算法 ,那么在了解归并排序之前,我们先 阅读全文
posted @ 2023-07-08 14:26 冰山奇迹 阅读(434) 评论(0) 推荐(0)
摘要: 背景 多线程编程在实际应用中非常常见,它可以帮助我们提高程序性能,实现高效的任务调度。从C++11开始,C++语言已经提供了对多线程编程的原生支持。本文将详细介绍如何使用C++进行线程管控,包括发起线程、等待线程完成、异常处理以及在后台运行线程等内容。 发起线程 C++11提供了一个名为std::t 阅读全文
posted @ 2023-07-08 11:17 冰山奇迹 阅读(96) 评论(0) 推荐(0)
摘要: 背景 随着多核处理器的普及,多线程编程已经成为软件开发中不可或缺的一部分。C++11标准为我们带来了线程库,让我们能够更方便地在C++中实现多线程编程。在这篇博客中,我们将介绍C++线程管控的基本概念和方法,包括向线程函数传递参数,移交线程归属权,运行时选择线程数量和识别线程。 向线程函数传递参数 阅读全文
posted @ 2023-07-08 11:16 冰山奇迹 阅读(28) 评论(0) 推荐(0)
摘要: 背景 在多线程编程中,死锁是一个常见的问题,它会导致程序陷入无法继续执行的状态。在这篇博客中,我们将介绍C++中死锁的概念、产生原因以及解决办法。 什么是死锁? 死锁是指多个线程在等待对方释放资源,导致彼此都无法继续执行的情况。死锁通常发生在多个线程同时锁定多个互斥锁的情况下。以下是一个简单的死锁示 阅读全文
posted @ 2023-07-08 11:14 冰山奇迹 阅读(714) 评论(0) 推荐(0)
摘要: 背景 在多线程编程中,线程间共享数据是一种常见的情况。然而,如果不加以处理,共享数据可能导致一些问题,如条件竞争。在这篇博客中,我们将介绍C++线程共享数据的问题,包括条件竞争的概念以及防止恶性条件竞争的方法。 什么是条件竞争? 条件竞争(Race Condition)是指多个线程在访问和操作共享数 阅读全文
posted @ 2023-07-08 11:14 冰山奇迹 阅读(136) 评论(0) 推荐(0)
摘要: 背景 在C++多线程编程中,线程间共享数据是一种常见的情况。然而,如果不加以处理,共享数据可能导致一些问题,如条件竞争。本文将介绍C++中多线程共享数据的方式,包括各种方式的使用场景和比较。 使用互斥锁(Mutex) 互斥锁(Mutex)是一种同步原语,用于保护共享数据的访问。当一个线程访问共享数据 阅读全文
posted @ 2023-07-08 11:13 冰山奇迹 阅读(185) 评论(0) 推荐(0)
摘要: 背景 在C++多线程编程中,锁是一种常用的同步原语,用于保护共享数据的访问。C++标准库提供了多种锁类型,适用于不同的使用场景。在这篇博客中,我们将介绍C++中的各种锁类型,比较它们的特点,并探讨不同锁在实际应用中的使用场景。 std::mutex std::mutex是C++标准库中最基本的互斥锁 阅读全文
posted @ 2023-07-08 11:13 冰山奇迹 阅读(229) 评论(0) 推荐(0)
摘要: 背景 在C++多线程编程中,同步线程间的操作和结果通常是一个关键问题。C++11引入了std::future这一同步原语,用于表示异步操作的结果。本文将介绍C++中std::future的使用方法、优势以及与其他同步方法的对比。 使用std::future std::future表示一个异步操作的结 阅读全文
posted @ 2023-07-08 11:12 冰山奇迹 阅读(984) 评论(0) 推荐(0)
摘要: 背景 C++内存模型是C++程序中内存管理和数据存储的基础。了解C++内存模型的概念和运作机制对于编写高效、安全的C++代码至关重要。本文将详细介绍C++内存模型的基本概念、内存分配策略以及与其相关的代码示例。 C++内存模型的基本概念 C++内存模型主要包括以下几个部分: 静态存储区:用于存储全局 阅读全文
posted @ 2023-07-08 11:11 冰山奇迹 阅读(276) 评论(0) 推荐(0)
摘要: 背景 在C++多线程编程中,线程间的同步与顺序执行是至关重要的。同步操作可以确保线程间的数据一致性,避免数据竞争和死锁问题。强制次序则可以确保线程间的操作按照预期顺序执行。本文将详细介绍C++多线程编程中的同步关系、先行关系、原子操作的内存顺序、释放序列和同步关系、栅栏,以及如何凭借原子操作令非原子 阅读全文
posted @ 2023-07-08 11:11 冰山奇迹 阅读(313) 评论(0) 推荐(0)
摘要: 背景 在多线程编程中,线程间的同步和数据竞争问题是无法避免的。传统的同步方法,如互斥锁(mutex)和条件变量(condition variable),可能导致性能下降和死锁等问题。C++11引入了原子操作,提供了一种更高效、安全的多线程编程方式。本文将介绍C++中的原子操作概念、使用方法及示例。 阅读全文
posted @ 2023-07-08 11:08 冰山奇迹 阅读(1355) 评论(0) 推荐(0)
摘要: 背景 在多线程编程中,如何有效地在多个线程间切分任务是一个关键问题。合理地切分任务可以充分发挥多核处理器的性能,提高程序的运行效率。本文将介绍在线程间切分任务的原理和实践,包括任务切分策略、负载均衡、任务同步等方面的内容。 任务切分策略 在多线程编程中,我们需要根据实际需求和性能要求,选择合适的任务 阅读全文
posted @ 2023-07-08 11:07 冰山奇迹 阅读(153) 评论(0) 推荐(0)