【问题标题】:How to stop Azure Worker Role如何停止 Azure 辅助角色
【发布时间】:2014-04-25 12:55:29
【问题描述】:

我们有 1-2 个 worker,它旋转 5 个线程,每个线程从 Azure 队列中读取消息并进行长时间处理,每个处理可能需要大约 1-2 小时。我们想实现逻辑以在特定工作角色处停止特定线程。用户将提交取消特定处理的请求。我们将工作人员角色和线程信息保存在我们的 azure 表中。但是我们被困在实施以停止正在处理的特定工作者角色的线程。任何人都可以给出一些想法/设计来停止特定工作人员中的特定线程。我们可以利用线程的取消标记来停止线程吗?请帮助我们停止工作角色的线程。

【问题讨论】:

    标签: multithreading azure


    【解决方案1】:

    您将需要某种标志。所以要么是一个被监控的新队列,要么是一个数据库更新。

    然后在您的工作人员角色中启动一个新线程,监控这些取消消息/标志,选择正确的线程并停止它。

    我不建议在正在处理的线程中执行任何操作,因为它会减慢您的工作速度,但是如果您的线程有 OnStop 方法,您可以在关闭它之前使用它来整理线程。

    【讨论】:

    • 谢谢亚当。你的方法给了我方向。但是我不明白“如果你的线程有一个 OnStop 方法,你可以在关闭它之前使用它来整理线程。”你在线程取消中说话吗? ...我的另一个问题是,如果我们有 2 个工作角色,如何关闭 Worker Role 的线程。如果它是相同的工人角色,你的方法就完美了。
    • 在每个工作角色上,您都需要启动线程。保留对这些线程的引用。我之前通过使用 List 来保存它们。在这个线程之外有另一个线程正在运行以监视数据库中的标志。一旦它检测到停止线程的标志,您就可以调用 Thread.Abort();
    • 谢谢亚当。让我试试
    猜你喜欢
    • 2013-09-23
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多