
windows C++并行编程技术
文章平均质量分 69
windows Visual C++ 提供了以下技术,可创建多线程和并行程序,利用多核优势,使用 GPU 进行常规用途编程。
程序员王马
windows驱动工程师,从事windows 底层开发10年,开发过Serial、1394、stream、Image、Network、USB、GNSS、MBBCx、BlueTooch、Wifi、NCM等几乎所有类别的驱动程序开发项目。
展开
-
windows C++-并发中的最佳做法(二)
本文档介绍适用于并发运行时多个区域的最佳做法。原创 2024-10-22 00:15:00 · 424 阅读 · 0 评论 -
windows C++-并发中的最佳做法(一)
本文档介绍适用于并发运行时多个区域的最佳做法。原创 2024-10-22 00:15:00 · 760 阅读 · 0 评论 -
windows C++ 有效利用异步代理库(二)
本文档介绍如何有效利用异步代理库。代理库为粗粒度数据流和管道任务提升了基于角色的编程模型和进程内消息传递。原创 2024-10-21 00:52:55 · 414 阅读 · 0 评论 -
windows C++ 有效利用异步代理库(三)
本文档介绍如何有效利用异步代理库。代理库为粗粒度数据流和管道任务提升了基于角色的编程模型和进程内消息传递。原创 2024-10-21 00:52:45 · 312 阅读 · 0 评论 -
windows C++ 有效利用异步代理库(一)
本文档介绍如何有效利用异步代理库。代理库为粗粒度数据流和管道任务提升了基于角色的编程模型和进程内消息传递。原创 2024-10-20 18:19:39 · 549 阅读 · 0 评论 -
windows C++-有效使用PPL(五)
我们建议不在任务中执行关键操作(如释放资源),除非可以保证这些任务不会被取消。我们还建议不使用可在类型的析构函数中引发的运行时功能。原创 2024-10-20 18:19:37 · 298 阅读 · 0 评论 -
windows C++-有效使用PPL(四)
我们建议不在任务中执行关键操作(如释放资源),除非可以保证这些任务不会被取消。我们还建议不使用可在类型的析构函数中引发的运行时功能。原创 2024-10-19 03:35:19 · 438 阅读 · 0 评论 -
windows C++-有效使用PPL(三)
我们建议不在任务中执行关键操作(如释放资源),除非可以保证这些任务不会被取消。我们还建议不使用可在类型的析构函数中引发的运行时功能。原创 2024-10-19 03:35:11 · 387 阅读 · 0 评论 -
windows C++-有效使用PPL(二)
我们建议不在任务中执行关键操作(如释放资源),除非可以保证这些任务不会被取消。我们还建议不使用可在类型的析构函数中引发的运行时功能。原创 2024-10-16 00:15:00 · 474 阅读 · 0 评论 -
windows C++-有效使用PPL(一)
我们建议不在任务中执行关键操作(如释放资源),除非可以保证这些任务不会被取消。我们还建议不使用可在类型的析构函数中引发的运行时功能。原创 2024-10-16 00:15:00 · 599 阅读 · 0 评论 -
windows C++-使用异步消息快(四)
消息块参与发送和接收消息的操作。发送消息的消息块称为源块。接收消息的消息块称为目标块。发送和接收消息的消息块称为传播器块。代理库使用抽象类 concurrency::ISource 表示源快,使用抽象类 concurrency::ITarget 表示目标块。充当源的消息块类型派生自 ISource;充当目标的消息块类型派生自 ITarget。原创 2024-10-15 00:15:00 · 247 阅读 · 0 评论 -
windows C++-使用异步消息快(三)
消息块参与发送和接收消息的操作。发送消息的消息块称为源块。接收消息的消息块称为目标块。发送和接收消息的消息块称为传播器块。代理库使用抽象类 concurrency::ISource 表示源快,使用抽象类 concurrency::ITarget 表示目标块。充当源的消息块类型派生自 ISource;充当目标的消息块类型派生自 ITarget。原创 2024-10-15 00:15:00 · 285 阅读 · 0 评论 -
windows C++-使用异步消息快(二)
消息块参与发送和接收消息的操作。发送消息的消息块称为源块。接收消息的消息块称为目标块。发送和接收消息的消息块称为传播器块。代理库使用抽象类 concurrency::ISource 表示源快,使用抽象类 concurrency::ITarget 表示目标块。充当源的消息块类型派生自 ISource;充当目标的消息块类型派生自 ITarget。原创 2024-10-14 00:15:00 · 325 阅读 · 0 评论 -
windows C++-使用异步消息快(一)
消息块参与发送和接收消息的操作。发送消息的消息块称为源块。接收消息的消息块称为目标块。发送和接收消息的消息块称为传播器块。代理库使用抽象类 concurrency::ISource 表示源快,使用抽象类 concurrency::ITarget 表示目标块。充当源的消息块类型派生自 ISource;充当目标的消息块类型派生自 ITarget。原创 2024-10-14 00:15:00 · 1624 阅读 · 0 评论 -
windows C++-轻量级任务
轻量级任务是直接从 concurrency::Scheduler 或 concurrency::ScheduleGroup 对象计划的任务。当改编现有代码以使用并发运行时的计划功能时,轻量级任务非常有用。本文演示如何调整使用 Windows API 创建和执行线程的现有代码以使用轻量级任务。原创 2024-10-13 00:15:00 · 168 阅读 · 0 评论 -
windows C++-在启用 COM 的应用程序中使用并发(三)
也可以在使用组件对象模型 (COM) 的应用程序中使用并发运行时,关于COM组件的问题不在本文中讲述,默认读者理解com技术。原创 2024-10-13 00:15:00 · 173 阅读 · 0 评论 -
windows C++-在启用 COM 的应用程序中使用并发(二)
也可以在使用组件对象模型 (COM) 的应用程序中使用并发运行时,关于COM组件的问题不在本文中讲述,默认读者理解com技术。原创 2024-10-12 00:15:00 · 323 阅读 · 0 评论 -
windows C++-在启用 COM 的应用程序中使用并发(一)
也可以在使用组件对象模型 (COM) 的应用程序中使用并发运行时,关于COM组件的问题不在本文中讲述,默认读者理解com技术。原创 2024-10-12 00:15:00 · 298 阅读 · 0 评论 -
windows C++-移除界面工作线程(三)
本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。本文档还演示了如何提高冗长绘制操作的性能。通过将阻塞性操作(例如,绘制)卸载到工作线程来从 UI 线程中移除工作,可以提高应用程序的响应能力。本文使用可生成 Mandelbrot 分形的绘制例程来演示一个冗长的阻塞性操作。Mandelbrot 分形的生成也非常适合并行化,因为每个像素的计算都是独立于所有其他计算的。原创 2024-10-11 00:30:00 · 336 阅读 · 0 评论 -
windows C++-移除界面工作线程(二)
本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。本文档还演示了如何提高冗长绘制操作的性能。通过将阻塞性操作(例如,绘制)卸载到工作线程来从 UI 线程中移除工作,可以提高应用程序的响应能力。本文使用可生成 Mandelbrot 分形的绘制例程来演示一个冗长的阻塞性操作。Mandelbrot 分形的生成也非常适合并行化,因为每个像素的计算都是独立于所有其他计算的。原创 2024-10-11 00:30:00 · 177 阅读 · 0 评论 -
windows C++-移除界面工作线程(一)
本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。本文档还演示了如何提高冗长绘制操作的性能。通过将阻塞性操作(例如,绘制)卸载到工作线程来从 UI 线程中移除工作,可以提高应用程序的响应能力。本文使用可生成 Mandelbrot 分形的绘制例程来演示一个冗长的阻塞性操作。Mandelbrot 分形的生成也非常适合并行化,因为每个像素的计算都是独立于所有其他计算的。原创 2024-10-10 04:11:32 · 595 阅读 · 0 评论 -
windows C++-避免死锁(下)
下面通过“哲学家就餐问题”说明了如何使用 concurrency::join 类来避免在应用程序中发生死锁。在软件应用中,如果两个或多个进程分别留有资源,且相互等待另一进程释放其他资源,就会发生死锁。“哲学家就餐问题”是在多个并发进程之间共享一组资源时可能发生的一组问题的一个特定示例。原创 2024-10-10 04:10:53 · 576 阅读 · 0 评论 -
windows C++-避免死锁(上)
下面通过“哲学家就餐问题”说明了如何使用 concurrency::join 类来避免在应用程序中发生死锁。在软件应用中,如果两个或多个进程分别留有资源,且相互等待另一进程释放其他资源,就会发生死锁。“哲学家就餐问题”是在多个并发进程之间共享一组资源时可能发生的一组问题的一个特定示例。原创 2024-10-09 22:12:07 · 766 阅读 · 0 评论 -
windows C++-实现 Future(一)
为了实现未来(future),本文定义 async_future 类。async_future 类使用并发运行时的这些组件:concurrency::task_group 类和 concurrency::single_assignment 类。async_future 类使用 task_group 类异步计算值,使用 single_assignment 类存储计算结果。async_future 类的构造函数采用计算结果的工作函数,并采用 get 方法检索结果。原创 2024-10-09 02:15:00 · 595 阅读 · 0 评论 -
windows C++-创建图像处理的异步消息(三)
网络会基于图像特征确定要对图像执行的操作。 此示例使用数据流模型通过网络路由图像。 在数据流模型中,程序的独立组件之间通过发送消息进行通信。 某个组件收到消息时,它可以执行某个操作,然后将该操作的结果传递给另一个组件。 相比之下,在控制流模型中,应用程序使用控制结构(例如条件语句和循环等等)控制程序中操作的顺序。基于数据流的网络会创建任务的管道。 管道的每个阶段都并发执行整个任务的一部分。 这就好比是汽车制造装配线。 每辆汽车通过装配线时,一站组装车架,另一站则安装引擎,以此类推。 通过实现同时装配多辆原创 2024-10-09 02:00:00 · 331 阅读 · 0 评论 -
windows C++-创建图像处理的异步消息(二)
网络会基于图像特征确定要对图像执行的操作。 此示例使用数据流模型通过网络路由图像。 在数据流模型中,程序的独立组件之间通过发送消息进行通信。 某个组件收到消息时,它可以执行某个操作,然后将该操作的结果传递给另一个组件。 相比之下,在控制流模型中,应用程序使用控制结构(例如条件语句和循环等等)控制程序中操作的顺序。基于数据流的网络会创建任务的管道。 管道的每个阶段都并发执行整个任务的一部分。 这就好比是汽车制造装配线。 每辆汽车通过装配线时,一站组装车架,另一站则安装引擎,以此类推。 通过实现同时装配多辆原创 2024-10-08 21:53:06 · 598 阅读 · 0 评论 -
windows C++-创建图像处理的异步消息(一)
网络会基于图像特征确定要对图像执行的操作。 此示例使用数据流模型通过网络路由图像。 在数据流模型中,程序的独立组件之间通过发送消息进行通信。 某个组件收到消息时,它可以执行某个操作,然后将该操作的结果传递给另一个组件。 相比之下,在控制流模型中,应用程序使用控制结构(例如条件语句和循环等等)控制程序中操作的顺序。基于数据流的网络会创建任务的管道。 管道的每个阶段都并发执行整个任务的一部分。 这就好比是汽车制造装配线。 每辆汽车通过装配线时,一站组装车架,另一站则安装引擎,以此类推。 通过实现同时装配多辆原创 2024-10-08 00:19:43 · 611 阅读 · 0 评论 -
windows C++-创建数据流代理(三)
控制流指的是程序中操作的执行顺序。 控制流是通过使用条件语句、循环等控制结构调节的。 此外,数据流指的是一种编程模型,在这种模型中,只有当所有需要的数据都可用时,才会进行计算。 数据流编程模型与消息传递这一概念相关,其中程序的独立组件通过发送消息相互通信。异步代理同时支持控制流和数据流编程模型。 尽管控制流模型适用于许多情况,但数据流模型也适用于其他一些情况,例如,当代理接收数据并执行基于该数据的有效负载的操作时。原创 2024-10-08 00:02:21 · 366 阅读 · 0 评论 -
windows C++-创建数据流代理(二)
控制流指的是程序中操作的执行顺序。控制流是通过使用条件语句、循环等控制结构调节的。此外,数据流指的是一种编程模型,在这种模型中,只有当所有需要的数据都可用时,才会进行计算。数据流编程模型与消息传递这一概念相关,其中程序的独立组件通过发送消息相互通信。异步代理同时支持控制流和数据流编程模型。尽管控制流模型适用于许多情况,但数据流模型也适用于其他一些情况,例如,当代理接收数据并执行基于该数据的有效负载的操作时。下面演示演示如何创建基于数据流,而不是基于控制流的基于代理的应用程序。原创 2024-10-07 23:58:41 · 408 阅读 · 0 评论 -
windows C++-创建数据流代理(一)
控制流指的是程序中操作的执行顺序。控制流是通过使用条件语句、循环等控制结构调节的。此外,数据流指的是一种编程模型,在这种模型中,只有当所有需要的数据都可用时,才会进行计算。数据流编程模型与消息传递这一概念相关,其中程序的独立组件通过发送消息相互通信。异步代理同时支持控制流和数据流编程模型。尽管控制流模型适用于许多情况,但数据流模型也适用于其他一些情况,例如,当代理接收数据并执行基于该数据的有效负载的操作时。下面演示演示如何创建基于数据流,而不是基于控制流的基于代理的应用程序。原创 2024-10-07 23:58:39 · 528 阅读 · 0 评论 -
windows C++-创建基于代理的应用程序(上)
本文介绍了如何创建基本的基于代理的应用程序。在这个案例中,你可以创建一个代理,从文本文件中异步读取数据。应用程序使用 Adler-32 校验和算法来计算该文件内容的校验和。原创 2024-10-06 23:04:05 · 883 阅读 · 0 评论 -
windows C++-创建基于代理的应用程序(下)
本文介绍了如何创建基本的基于代理的应用程序。在这个案例中,你可以创建一个代理,从文本文件中异步读取数据。应用程序使用 Adler-32 校验和算法来计算该文件内容的校验和。原创 2024-10-06 23:03:57 · 484 阅读 · 0 评论 -
windows C++-windows C++-使用任务和 XML HTTP 请求进行连接(三)
当您使用 IXMLHTTPRequest2 接口通过 HTTP 创建 Web 请求时,可以实现 IXMLHTTPRequest2Callback 接口来接收服务器响应并对其他事件做出响应。此示例定义了 HttpRequest 类来创建 Web 请求,并定义了 HttpRequestBuffersCallback 和 HttpRequestStringCallback 类来处理响应。原创 2024-10-03 21:12:42 · 185 阅读 · 0 评论 -
windows C++-windows C++-使用任务和 XML HTTP 请求进行连接(二)
当您使用 IXMLHTTPRequest2 接口通过 HTTP 创建 Web 请求时,可以实现 IXMLHTTPRequest2Callback 接口来接收服务器响应并对其他事件做出响应。此示例定义了 HttpRequest 类来创建 Web 请求,并定义了 HttpRequestBuffersCallback 和 HttpRequestStringCallback 类来处理响应。原创 2024-10-03 21:12:30 · 602 阅读 · 0 评论 -
windows C++-UWP 应用中使用 HttpRequest 类
如果你的应用程序不需要取消支持,请将 concurrency::cancellation_token::none 传递给 HttpRequest::GetAsync 和 HttpRequest::PostAsync 方法。6. 在 MainPage.xaml.cpp 中,实现 GetButton_Click 类的 PostButton_Click、CancelButton_Click 和 MainPage 方法。7. 在 MainPage.xaml.cpp 中,实现。原创 2024-10-02 02:07:31 · 352 阅读 · 0 评论 -
windows C++-使用任务和 XML HTTP 请求进行连接(一)
当您使用 IXMLHTTPRequest2 接口通过 HTTP 创建 Web 请求时,可以实现 IXMLHTTPRequest2Callback 接口来接收服务器响应并对其他事件做出响应。此示例定义了 HttpRequest 类来创建 Web 请求,并定义了 HttpRequestBuffersCallback 和 HttpRequestStringCallback 类来处理响应。原创 2024-10-02 02:07:13 · 1097 阅读 · 0 评论 -
windows C++-内存管理函数
该文档介绍并发运行时提供的内存管理函数,可帮助你以并发方式分配和释放内存。并发运行时提供了一个默认计划程序,因此无需在应用程序中创建一个。由于任务计划程序有助于优化应用程序的性能,如果你刚开始接触并发运行时,建议从使用并行模式库 (PPL) 或异步代理库开始。并发运行时提供两个内存管理函数,这些函数已经过优化,能以并发方式分配和释放内存块。concurrency::Alloc 函数通过使用指定的大小来分配内存块。concurrency::Free 函数释放由 Alloc 分配的内存。原创 2024-10-01 04:36:46 · 877 阅读 · 0 评论 -
windows C++-使用上下文类实现协作信号量
下面演示如何使用 concurrency::Context 类实现协作信号灯类。Context 类允许你阻止或暂停当前执行上下文。在当前上下文因资源不可用而无法继续时,阻止或暂停当前上下文很有用。信号灯是当前执行上下文必须等待资源变为可用的一种情况示例。信号灯(例如关键节对象)是一个同步对象,支持一个上下文中的代码具有对资源的独占访问权限。但是,与关键节对象不同,信号灯支持多个上下文同时访问资源。如果具有信号灯锁的上下文数量达到上限,则每个附加的上下文必须等待另一个上下文释放信号灯锁。原创 2024-09-30 00:15:00 · 920 阅读 · 0 评论 -
windows C++-使用过度订阅偏移延迟
超额订阅可以提高某些包含高延迟任务的应用程序的整体效率。本文说明如何使用超额订阅来抵消从网络连接读取数据所导致的延迟。原创 2024-09-30 00:15:00 · 540 阅读 · 0 评论 -
windows C++~上下文
本文档介绍并发运行时中上下文的角色。附加到计划程序的线程称为执行上下文(或只是上下文)。concurrency::wait 函数和 concurrency::Context 类允许你控制上下文的行为。使用 wait 函数在指定时间内暂停当前上下文。当你需要更好地控制上下文何时阻止、取消阻止和暂停时,或者更好地控制你希望何时过度订阅当前上下文时,请使用 Context 类。并发运行时提供了一个默认计划程序,因此无需在应用程序中创建一个。原创 2024-09-30 00:15:00 · 477 阅读 · 0 评论