首页 > 解决方案 > 主线程中可能有后台工作人员 DoWork 吗?

问题描述

主线程中可能有后台工作人员 DoWork 吗?我的意思是如果某些设备只有一个 CPU,有可能发生吗?

PS:我正在研究统一,所以运行 Android & IOS & Windows 平台。

    System.ComponentModel.BackgroundWorker bw = new System.ComponentModel.BackgroundWorker();
    bool inMainThread = false;
    int mainThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId;

    bw.DoWork += (object sender, System.ComponentModel.DoWorkEventArgs e) =>
        {   // Is it possible equal true ??
            inMainThread = mainThreadId == System.Threading.Thread.CurrentThread.ManagedThreadId;
        }

标签: c#.netmultithreadingunity3dbackgroundworker

解决方案


不,这是不可能的。ABackgroundWorker将始终在单独的线程上完成其工作。

到了只有一个 CPU 的系统的地步。一个操作系统异步运行许多程序,每个程序可以有许多线程。操作系统将安排所有这些线程在某个时间点在任何可用的 CPU 上运行。这对于保持系统平稳运行至关重要,尤其是当系统只有一个 CPU 时。

如果您想了解更多信息,可以查看此处此处,首先我会推荐视频。


推荐阅读