Я новичок в CSharp и Threading.
Чтобы быть знакомым с Monitor.Wait, Monitor.lock и Monitor.PulseAll, я создал сценарий, описанный ниже.
<я > "FootballGround разделяют разные команды для практической цели. В любой момент только одна команда может использовать почву для своей практики. Команда может использовать землю в течение 30 минут для своей практики. По прошествии 25 минут она должна сигнализировать о других нити, которые земля собирается освободить через 5 минут. Когда земля мокрая (перечисление имеет три значения бесплатно, выделено, мокрое), никакая команда не может заблокировать землю, и все должны ждать 10 минут"
Честно говоря, я не знаю, как превратить описание в фактическое кодирование. Основываясь на моем понимании, я разработал схему.
namespace ThreadingSimulation
{
// A Random Activity can be picked up from this enum by a team
public enum RandomGroundStatus
{
free,
allotted,
Wet
}
class FootBallGround
{
public void Playing(object obj)
{
// Here the name of the team which is using the ground will be printed
// Once the time is reached to 25 minnutes the active thread acquired
// the lock will signal other threads
}
public void GroundCleaningInProgress(object obj)
{
// Ground cleaning is in progress all of you
// wait for 10 minutes
}
}
class Team
{
string teamName;
static void Main()
{
//select random value for GrandStatus from enum
// if the ground is wet no team is allowed to get the
// ground for 10 minutes
//if the ground is free "Team A" locks the ground
// otherwise "Team B" locks the ground
}
}
}
Здесь я не знаю, как применять блокировки и signalls.kindly помочь мне.