Я изучаю возможность использования скомпилированной .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 секунды перед возвратом.
Выполнение вышеуказанного кода,Я наблюдаю сообщение «Elapsed (1)» через 3 секунды, а сообщение «Elapsed (2)» через 6 секунд.Это заставило бы меня думать, что одновременные вызовы среды выполнения MATLAB всегда будут ставиться в очередь однопоточным способом.
Мои вопросы:
Есть ли способ разрешитьмногопоточность в этом сценарии?
В других средах (особенно меня интересует среда Java), будет ли это ограничение по-прежнему встречаться?