如何以某种优先级异步调用方法?

2023-12-02

我需要以不同的优先级异步调用几个方法。

我的第一个想法是使用线程池并更改线程的优先级,如下所示:

static void Run()
{
  ThreadPool.QueueUserWorkItem(new WaitCallback(SomeMethod));
}

static void SomeMethod(object o)
{
  Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; // is this ok?
  // do some work here
}

这有效吗?或者你有什么建议?


根据http://msdn.microsoft.com/en-us/library/0ka9477y.aspx,如果你的目标是 2.0,它就不起作用,它暗示 3.5 存在一些差异,但没有具体提及优先级:

何时不使用线程池线程

有几种场景适合创建和管理自己的线程而不是使用线程池线程:

  • 您需要一个前台线程。

  • 您需要一个线程具有特定的优先级。

  • 您的任务会导致线程长时间阻塞。线程池具有最大线程数,因此大量阻塞的线程池线程可能会阻止任务启动。

  • 您需要将线程放入单线程单元中。所有ThreadPool线程都在多线程单元中。

  • 您需要有一个与线程相关联的稳定身份,或者将线程专用于某项任务。

您可能需要提出自己的实现,并直接处理线程的创建。

问题:您想要实现什么目标?您有一组任务需要处理,并且您希望首先执行高优先级任务,稍后执行较低优先级的任务;或者你真的想要不同优先级的线程吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以某种优先级异步调用方法? 的相关文章

随机推荐

  • 如何在Python中将日转换为年和月?

    如何在Python中将日转换为年 月和日 例如 如果某人已经 5 538 天了 我怎样才能通过这样的年月日来显示这一点 15岁2个月又1天 这是为了获取用户的输入 print Please enter your birthday bd ye
  • UICollectionView - 水平排列单元格

    所以基本上我的问题是我的集合视图单元格是从上到下排序的 而不是从左到右排序的 This is what it looks like 1 4 7 2 5 8 3 6 9 This is what i want 1 2 3 4 5 6 7 8
  • 需要在角度2中插入Script标签

    我已经做了一些阅读和搜索 几乎所有我发现的内容都表明脚本标签不能包含在 Angular 2 的模板中 我们会像您一样有意从模板中删除标签 不应该使用它们来按需加载代码 https github com angular angular iss
  • 特定元素是否存在事件

    是否有任何事件可以知道原始 javascript 中特定元素何时 开始存在 例如我有 div class parent div class child div div 我想在 parent 和只有 parent 不是 child 开始存在
  • 更快地绘制实时音频信号

    我有一段代码 它从笔记本电脑的音频插孔获取实时音频信号 并在进行一些基本过滤后绘制其图表 我面临的问题是 随着程序的运行 实时绘图变得越来越慢 有什么建议可以让绘图更快并以恒定的速度进行吗 我认为动画功能会使其更快 但无法根据我的要求制定
  • git diff 用于任何存储库之外的自定义 2 个文件?

    I need git diff我在任何存储库之外拥有的 2 个文件的功能 有办法做到吗 就像是git diff file1 path file1 txt file2 path file2 txt如果没有 替代解决方案是什么 答案就在the
  • 强制请求使用 IPv4 / IPv6

    如何强制requests库使用特定的互联网协议版本来获取请求 或者可以用Python中的另一种方法更好地实现这一点吗 我可以 但我不想使用curl 阐明目的的示例 import requests r requests get https m
  • 在 Woocommerce 3 中使用 WC_Cart add_to_cart() 方法存储自定义数据

    我正在创建一个会员网站 并为每个会员计划完全创建静态页面 只有 3 个计划 但是 我为每个计划添加了产品 当我点击 选择计划 按钮时 我会重定向到一些自定义表单 在其中询问用户我们将用于实现计划的信息范围 与sneakertub com相同
  • 如何使用 CGContext 获取像素的 RGB 值?

    我正在尝试通过更改像素来编辑图像 我有以下代码 let imageRect CGRectMake 0 0 self image image size width self image image size height UIGraphics
  • 出现编译错误时eclipse如何执行java代码

    当下面的java代码在eclipse中执行时 它给出了正确的输出 即打印 Class B 但根据java规范 代码无法编译 因为超类构造函数需要一个int编译器为类 B 提供的参数和构造函数包括对超类 无参数构造函数 的调用 该构造函数未定
  • JavaScript ES6 Promise for 循环

    for let i 0 i lt 10 i const promise new Promise resolve reject gt const timeout Math random 1000 setTimeout gt console l
  • 有没有办法将 pmml 文件导入到 python 中?

    我使用 sklearn 训练了一个模型 并使用 sklearn2pmml 将其导出为 pmml 格式 有没有办法将该 pmml 文件转换回可以在 python 中导入和运行的文件 我之所以这样做 是因为我注意到 pmml 模型与 sklea
  • Symfony2 Sonata 管理员根据所选值动态更改输入数据

    对于我的一个对象 我需要创建一些动态表单渲染 但我不知道如何在 Sonata Admin 中执行此操作 例如 当我创建一个对象时 我有一个字段类型 在此字段中 我选择我的对象的类型 现在 当我选择类型时 我想根据类型显示一个字段 例如 如果
  • `strtoul()` 对于非常“负”的字符串,正确的返回值是什么?

    这是一提出并回答自己的问题是可以的 我研究了这个问题 发现结果很奇怪 并发布了我的发现 非常负 的字符串应该返回什么值strtoul 1 ULONG MAX或者是什么 strtol 对于表示数值的字符串 例如 123 strtol 行为符合
  • 在 Visual Studio 2022 (17.5.3) 发布向导中看不到 Azure 资源

    我已经无数次将 ASP NET MVC 网站发布到 Azure 应用服务 但今天 当我尝试这样做时 出现了发布错误 我认为这可能与最近更改密码有关 因此退出了我的 Microsoft 帐户并删除了旧的发布配置文件 以便我可以重新开始 然而
  • 使用新的驱动程序模块交叉编译 Linux Arm 内核

    我正在尝试包含一个在我的 arch linux arm 机器上使用的驱动程序 我尝试使用这些步骤来包含驱动程序模块 但是带有添加的驱动程序的交叉编译内核无法加载 1 Include the driver I want to add by m
  • 在 Woocommerce 中为两个或多个购物车商品启用免费送货

    在 Woocommerce 中 我想根据购物车商品的数量提供免费送货服务 首先 我开始查看可用的插件 但根据数量我找不到任何简单的解决方案 我想做的就是 买任何东西 2 件即可免运费 闲逛 我尝试了以下代码 function free sh
  • 删除所有空行

    我认为这并不难做到 但我想用 String replaceAll 删除所有空行 或 Java 中仅包含空格和制表符的行 我的正则表达式如下所示 s s replaceAll t n 但这不起作用 我环顾四周 但只找到了用于删除没有空格或制表
  • 如何使用c#在命令提示符下执行多个命令

    我想执行多个命令 如下所示 cd C Informatica 9 0 clients PowerCenterClient client bin pmrep 连接 r rs 01 lab d Domain DELLBANPDB01 n etl
  • 如何以某种优先级异步调用方法?

    我需要以不同的优先级异步调用几个方法 我的第一个想法是使用线程池并更改线程的优先级 如下所示 static void Run ThreadPool QueueUserWorkItem new WaitCallback SomeMethod