multithreading - Windows Azure Worker Role,主线程做什么?

标签 multithreading azure background-process

因此,我们正在使用 windows azure 设置辅助角色,并且它以非常高的 CPU 利用率运行。我认为这与本节有关,但我不确定该怎么办。每个启动的单独线程都有自己的 sleep ,但主线程只是在 while 循环中运行。那里不应该 sleep 什么的吗?

public class WorkerRole : RoleEntryPoint
    {
        private List<ProcessBase> backgroundProcesses = new List<ProcessBase>();

        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.WriteLine("BackgroundProcesses entry point called", "Information");

            foreach (ProcessBase process in backgroundProcesses)
            {
                if (process.Active)
                {
                    Task.Factory.StartNew(process.Run, TaskCreationOptions.LongRunning);
                }
            }

            while (true) { }
        }

像这样的事情怎么样,合适吗?

  public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.WriteLine("BackgroundProcesses entry point called", "Information");

            List<Task> TaskList = new List<Task>();

            foreach (ProcessBase process in backgroundProcesses)
            {
                if (process.Active)
                {
                    TaskList.Add(Task.Factory.StartNew(process.Run, TaskCreationOptions.LongRunning));
                }
            }

            Task.WaitAll(TaskList.ToArray());
            //while (true) {  }
        }

最佳答案

我觉得你的改变很好。有时我使用Thread.Sleep(Timeout.Infinite)

你测试过吗?它会降低CPU使用率吗?可能是任务本身实际上消耗了大量 CPU。我们还不确定 while 循环是罪魁祸首。

关于multithreading - Windows Azure Worker Role,主线程做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12920782/

相关文章:

xcode - 线程 1 : breakpoint 7. 3 Xcode 7 swift

c++ - atomic fetch_add 与添加性能

azure - 使用 powershell 获取 Cosmos Db 容器吞吐量 Get-AzCosmosDBAcCount 吞吐量

java - Android如何在第一次从数据获取信息时转到其他 Activity

ruby-on-rails - Rails : Segmentation fault at Rjb when in background process, 不在后台时工作正常吗?

linux - 退出在主机上运行的 shell 脚本

c# - 如果我们定期更新GUI,后台线程真的有帮助吗?

multithreading - GTK 和 nanomsg 的线程友好主循环

ubuntu - 无法在 Azure 托管的 neo4j 实例上编辑 neo4j.properties 文件

visual-studio-2010 - Visual Studios 2010 SP1 "Unable to copy file ' ...\.svn\all-wcprops' 访问路径 'bin\\.svn\all-wcprops' 被拒绝”