windows C++-计划程序策略

news/2024/9/28 20:54:44/

本文介绍并发运行时中计划程序策略的角色。 计划程序策略能控制计划程序在管理任务时使用的策略。 例如,假设一个应用程序需要某些任务在 THREAD_PRIORITY_NORMAL 上执行,而其他任务在 THREAD_PRIORITY_HIGHEST 上执行。 您可以创建两个计划程序实例:一个指定 ContextPriority 策略为 THREAD_PRIORITY_NORMAL,另一个指定同一策略为 THREAD_PRIORITY_HIGHEST。

通过使用计划程序策略,您可以划分可用处理资源并将一组固定的资源分配给每个计划程序。 例如,考虑采用不超过 4 个处理器的并行算法。 可以创建一个计划程序策略,以限制其任务并发使用不超过 4 个处理器。

并发运行时提供默认计划程序。 因此,不必在应用程序中创建计划程序。 由于任务计划程序有助于优化应用程序的性能,如果你刚开始接触并发运行时,建议从使用并行模式库 (PPL) 或异步代理库开始。

当使用 concurrency::CurrentScheduler::Create、concurrency::Scheduler::Create 或 concurrency::Scheduler::SetDefaultSchedulerPolicy 方法创建计划程序实例时,请提供包含指定计划程序行为的键值对集合的 concurrency::SchedulerPolicy 对象。 SchedulerPolicy 构造函数采用可变数量的参数。 第一个参数是要指定的策略元素数。 其余参数是每个策略元素的键值对。 以下示例创建 SchedulerPolicy 对象以指定三个策略元素。 运行时对未指定的策略键使用默认值。

SchedulerPolicy policy(3,       MinConcurrency, 2,MaxConcurrency, 4,ContextPriority, THREAD_PRIORITY_HIGHEST
);

concurrency::PolicyElementKey 枚举定义与任务计划程序关联的策略键。 下表描述了策略键以及运行时针对其中每个键使用的默认值。

每个计划程序在计划任务时使用自己的策略。 与一个计划程序关联的策略不影响任何其他计划程序的行为。 此外,创建 Scheduler 对象后无法更改计划程序策略。

仅使用计划程序策略来控制运行时创建的线程的属性。 不要更改线程关联或运行时创建的线程的优先级,因为这可能会导致未定义的行为。

如果未显式创建计划程序,运行时会为你创建默认计划程序。 如果希望在应用程序中使用默认计划程序,但要为该计划程序指定要使用的策略,请在计划并行工作之前调用 concurrency::Scheduler::SetDefaultSchedulerPolicy 方法。 如果不调用 Scheduler::SetDefaultSchedulerPolicy 方法,运行时将使用表中的默认策略值。

使用 concurrency::CurrentScheduler::GetPolicy 和 concurrency::Scheduler::GetPolicy 方法可检索计划程序策略的副本。 从这些方法收到的策略值可能与创建计划程序时指定的策略值不同。


http://www.ppmy.cn/news/1531056.html

相关文章

C--结构体和位段的使用方法

各位看官如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论,感谢您的支持!!! 一:结构体 首先结构体我们有一个非常重要的规则 非常重要: 我们允许在初始化时自动将字符串字面…

生动好看的css卡片样式

样式一&#xff1a; 借鉴网址&#xff1a;https://www.vue3js.cn/ 展示&#xff1a; css <div classaa></div>.aa {width: 300px;height: 200px;background: #fbfbfb !important;border: 1px solid #f1f1f1;transition: all 0.2s ease-in-out; } .aa:hover {wi…

【Python 基础学习笔记】文件的基础操作

目录 1. 创建2. 写入3. 关闭4. 读取5. 定位6. 其他方法 1. 创建 Python 使用 open() 函数创建或打开文件&#xff0c;语法格式如下所示&#xff1a; open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)参数说明如下所示&#…

Kotlin:1.8.0 的新特性

一、概述 Kotlin 1.8.0版本英语官方文档 Kotlin 1.8.0 中文官方文档 The Kotlin 1.8.0 release is out and here are some of its biggest highlights: Kotlin 1.8.0发布了&#xff0c;下面是它的一些亮点: JVM 平台新增实验性函数&#xff1a;递归复制或删除目录内容改进了 …

微信小程序加载H5页面及与H5页面通信的实战教程

在微信小程序的开发过程中&#xff0c;我们有时需要在小程序中嵌入H5页面。本文将详细介绍如何在微信小程序中通过webview加载H5页面&#xff0c;并实现小程序与H5页面的通信。 一、准备工作 搭建微信小程序开发环境&#xff0c;具体步骤请参考官方文档&#xff1a;https://d…

代理IP对于网络爬虫业务的重要性

在现代互联网业务中&#xff0c;网络爬虫已成为企业获取大量数据的重要工具。在这一过程中&#xff0c;代理IP发挥着至关重要的作用&#xff0c;特别是对于高频率的数据抓取任务&#xff0c;代理IP能够有效提升爬虫的成功率和安全性。 1. 绕过IP封禁 网站为了防止过度的爬虫行…

C嘎嘎入门篇:类和对象(1)

前言&#xff1a; 小编在之前讲述了C的部分入门基础&#xff0c;读者朋友一定要掌握好那些&#xff0c;因为C的学习和C有点不同&#xff0c;C的知识都是比较连贯的&#xff0c;所以我们学好了前面才可以学习后面的内容&#xff0c;本篇文章小编将会讲述C真正的入门篇&#xff1…

数据结构升华部分:排序与字符串匹配算法应用

数据结构入门学习&#xff08;全是干货&#xff09;——综合应用 习题选讲 - 排序与字符串匹配算法 习题选讲 - Insert or Merge 习题-IOM.1 插入排序的判断 题意理解 如何区分简单插入和非递归的归并排序 插入排序&#xff1a;前面有序&#xff0c;后面没有变化。归并排…