You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在nanoFramework中为ESP32指定核心绑定任务?

关于nanoFramework在ESP32上绑定线程到特定核心的疑问

我之前查找到Arduino环境下可以通过xTaskCreatePinnedToCore(,,,0)或xTaskCreatePinnedToCore(,,,1)函数,将任务固定到ESP32的0号或1号核心。现在想了解在nanoFramework中有没有等效的实现方式,还是线程的核心分配由Thread类自动处理?

我看过一篇nanoFramework多线程相关的内容,里面只提到采用轮询(round-robin)调度方式,没有涉及核心切换的说明。我自己做了一个小型测试应用,运行情况尚可,但由于看起来并非真正的并发执行,所以想确认是否可以手动将进程分配到ESP32的0号或1号核心。


测试代码

public static void Main()
{
    new Thread(() =>
    {
        PrimCalcBadly badCalc = new PrimCalcBadly();
        badCalc.DoCalc("first thread");
    }).Start();

   //new Thread(() =>
   //{
   //    PrimCalcBadly badCalc = new PrimCalcBadly();
   //    badCalc.DoCalc("second thread");
   //}).Start();

    Thread.Sleep(Timeout.Infinite);
}

class PrimCalcBadly
{
    public void DoCalc(string calName) {
        Debug.WriteLine($"start {calName}");
        while (true)
        {
            var sDate = DateTime.UtcNow;
            for (int a = 2; a <= 1000; a++)
            {
                for (int b = 2; b <= 1000; b++)
                {
                    if (a != b && a % b == 0)
                    {
                        break;
                    }
                }
            }
            var eDate = DateTime.UtcNow;
            var ts = TimeSpan.FromTicks(eDate.Ticks - sDate.Ticks);
            Debug.WriteLine($"calculation for {calName} --> {ts.TotalSeconds}");
        }
    }
}

测试结果

仅运行1个计算实例

单次执行循环并重启约需2秒,调试窗口输出:

start first thread
calculation for first thread --> 2.020124999
calculation for first thread --> 2.020197

运行2个计算实例

单次执行循环耗时约4秒,调试窗口输出:

start first thread
start second thread
calculation for first thread --> 4.74040799
calculation for second thread --> 4.04035
calculation for first thread --> 4.040268
calculation for second thread --> 4.040204999

运行3个计算实例

单次执行循环耗时约6秒,调试窗口输出:

start first thread
start second thread
start third thread
calculation for first thread --> 7.26084799
calculation for second thread --> 6.66085599
calculation for third thread --> 6.020959999
calculation for first thread --> 6.06095
calculation for second thread --> 6.060862999
calculation for third thread --> 6.060842

内容的提问来源于stack exchange,提问作者CobyC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:40:38