【发布时间】:2011-09-19 20:24:22
【问题描述】:
我正在研究使用 .NET 编译的 MATLAB 程序集(使用 Matlab 编译器运行时获得)来同时(以多线程方式)执行多段代码的可能性。
我的代码读取
Thread t = new Thread(new ThreadStart(
() =>
{
dotnetclass AClass_1 = new dotnetclass();
Stopwatch sw = new Stopwatch();
sw.Start();
AClass_1.math_on_numbers(2, a, b);
sw.Stop();
Console.WriteLine("Elapsed (1): " + sw.Elapsed);
}));
Thread t2 = new Thread(new ThreadStart(
() =>
{
dotnetclass AClass_2 = new dotnetclass();
Stopwatch sw = new Stopwatch();
sw.Start();
AClass_2.math_on_numbers(2, a, b);
sw.Stop();
Console.WriteLine("Elapsed (2): " + sw.Elapsed);
}));
t.Start();
t2.Start();
其中dotnetclass 在 MATLAB .NET 程序集中定义,函数 math_on_numbers 执行一些伪数学运算并在返回前休眠 3 秒。
执行上面的代码,我在 3 秒后观察到“Elapsed (1)”消息,在 6 秒后观察到“Elapsed (2)”消息。这会让我觉得对 MATLAB 运行时的并发调用将始终以单线程方式排队。
我的问题:
有没有办法在这种情况下允许多线程?
在其他框架中(我对 Java 环境特别感兴趣),还会出现这种限制吗?
【问题讨论】:
标签: c# java multithreading matlab