private static void SpawnAlchemists(AlchemistsIndulger indulger) { for (int i = 0; i < 100; i++) { int rand = random.Next(4); Alchemist alchemist = null; switch (rand) { case 0: alchemist = new AlchemistA(); break; case 1: alchemist = new AlchemistB(); break; case 2: alchemist = new AlchemistC(); break; case 3: alchemist = new AlchemistD(); break; } Thread thread = new Thread(() => { alchemist.RequestResources(indulger); }); thread.IsBackground = true; thread.Start(); } }
private static void StartAlchemistsIndulger(AlchemistsIndulger indulger) { var iThread = new Thread( () => indulger.StartIndulging() ); iThread.IsBackground = true; iThread.Start(); }
public override void RequestResources(AlchemistsIndulger indulger) { Console.WriteLine($"{Name} requests resources."); indulger.ResourceRequestedBy(this); indulger.GuildDSem.Wait(); Console.WriteLine($"{Name} has been indulged."); }
static void Main(string[] args) { var factories = CreateFactories(); var indulger = new AlchemistsIndulger(resourceCreatedSem, factories[0], factories[1], factories[2]); StartAlchemistsIndulger(indulger); StartFactories(factories); SpawnWarlockAndSorcerer(factories); SpawnAlchemists(indulger); Task.Delay(20000).Wait(); }
public abstract void RequestResources(AlchemistsIndulger indulger);