Я пытаюсь смоделировать распределенный алгоритм, помещая каждый процесс (класс) в отдельный поток, чтобы они действовали как реальные изолированные процессы.Процессы должны иметь возможность взаимодействовать друг с другом.
То, что я пытаюсь сделать, может быть продемонстрировано этим фрагментом кода:
public class Process
{
public void Run()
{
Console.WriteLine("Run called from thread {0}", Thread.CurrentThread.ManagedThreadId);
}
public void Fnc()
{
Console.WriteLine("Fnc called from thread {0}", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
}
}
class Program
{
static void Main()
{
Console.WriteLine("Main is running in thread {0}", Thread.CurrentThread.ManagedThreadId);
Process p1 = new Process();
var t1 = new Thread(p1.Run);
t1.Start();
// This should call Fnc() in t1 Thread. It should also return immediatelly not waiting for method Fnc() to finish.
p1.Fnc();
Console.ReadLine();
}
}
Я получаю этот вывод:
Main is running in thread 9
Run called from thread 10
Fnc called from thread 9
Я хочу получить что-то вроде этого:
Main is running in thread 9
Run called from thread 10
Fnc called from thread 10
Возможно ли добиться такого рода функциональности?
Спасибо!