Я делаю однозначное задание в C#, где есть клиенты и повара. Клиенты размещают заказ, повара принимают его, делают порцию, а затем ложатся спать вечно. Каждая часть, которая производится, помещается в «поднос», и когда поднос заполнен, последний повар для работы на нем выведет его для пикапа, где клиенты его берут и уходят. Полная сумма лотка составляет 3. Мне разрешено защищать методы только с помощью замков или семафоров. Асинкватные структуры, спиннинг и сигнал/монитор не допускаются. Это должно быть справедливым, правильным и безопасным, без условий гонки. Насколько я понимаю, вы хотите потратить как можно меньше времени, как только можете внутри блокировки, и для размещения семафора потребуется больше времени для работы (внутри блокировки), это правда?Console.WriteLine($"-Cook {cookId} is about to pick up an order.");
Program.semaphore1.WaitOne();
lock (Program.orderLock)
{
tempOrder = orderLocation.First();
orderLocation.RemoveFirst();
}
< /code>
И это часть клиента: < /p>
lock (Program.orderLock)
{
orderLocation.AddFirst(order);
}
Program.semaphore1.Release();
< /code>
Это имеет значение, если бы я поместил .release (); Семфор внутри блокировки? Но мне очень любопытно, если он оказывает влияние, или есть какой -то стандарт кода, который говорит, что вы не можете сделать это, потому что ... Я также просто хочу знать, какие правила есть для замков и семафоров при кодировании (делают и не так).
Подробнее здесь: https://stackoverflow.com/questions/796 ... -outside-o
Есть ли какое -либо влияние положить семафор внутрь замка вместо его вне его? [закрыто] ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Получение надлежащего размера струнного сустава, чтобы я мог положить его внутрь буфера
Anonymous » » в форуме C++ - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как использовать семафор вместо этого кода (ожидание с активным циклом) ядра Linux?
Anonymous » » в форуме Linux - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-