
Составить программу, моделирующую работу супермаркета с кассами. Должна использоваться
многопоточность. В целом задание творческое, поэтому не нужно писать, что каких-то данных не хватает. Чего не хватает - задаем своим решением. Язык программирования - си шарп.

Ответы на вопрос

Ответ:
C#
interface X
{
public void doThis(int user);
public void doLog(string message);
}
class OS:Thread, X
{
public OS( int user){
doThis(user);
}
public void doThis(int user){
doLog("Started:"+DateTime.Now.ToString());
doLog("Action:"+"doThis"+"with userID:"+user));
doLog("Finished:"+DateTime.Now.ToString());
}
public void doLog(string message);
Console.WriteLine(message);
}
public static void Main() {
Thread t = new Thread(new OS(1));
t.Start();
}
0



К сожалению, я не могу написать полный исходный код программы в одном ответе, но я могу предоставить вам основные шаги и структуру программы на C# для моделирования работы супермаркета с кассами, используя многопоточность.
```csharp using System; using System.Collections.Generic; using System.Threading;
class Program { static void Main() { // Создаем супермаркет Supermarket supermarket = new Supermarket();
// Создаем и запускаем потоки для касс Thread cashierThread1 = new Thread(() => RunCashier(supermarket, 1)); Thread cashierThread2 = new Thread(() => RunCashier(supermarket, 2));
cashierThread1.Start(); cashierThread2.Start();
// Запускаем поток для добавления покупателей в очередь Thread customerThread = new Thread(() => GenerateCustomers(supermarket)); customerThread.Start();
// Ждем завершения всех потоков cashierThread1.Join(); cashierThread2.Join(); customerThread.Join(); }
static void RunCashier(Supermarket supermarket, int cashierNumber) { while (true) { // Получаем покупателя из очереди Customer customer = supermarket.GetCustomer();
// Обслуживаем покупателя if (customer != null) { Console.WriteLine($"Cashier {cashierNumber} is serving customer {customer.Id}"); Thread.Sleep(2000); // Имитация времени обслуживания Console.WriteLine($"Cashier {cashierNumber} served customer {customer.Id}"); } } }
static void GenerateCustomers(Supermarket supermarket) { int customerId = 1;
while (true) { // Генерируем нового покупателя Customer customer = new Customer(customerId++); // Добавляем покупателя в очередь supermarket.EnqueueCustomer(customer);
// Пауза перед добавлением следующего покупателя Thread.Sleep(1000); } } }
class Supermarket
{
private Queue
public void EnqueueCustomer(Customer customer) { lock (queueLock) { customerQueue.Enqueue(customer); Console.WriteLine($"Customer {customer.Id} entered the supermarket."); } }
public Customer GetCustomer() { lock (queueLock) { if (customerQueue.Count > 0) { return customerQueue.Dequeue(); } return null; } } }
class Customer { public int Id { get; private set; }
public Customer(int id) { Id = id; } } ```
Этот пример демонстрирует базовую структуру программы, моделирующей работу супермаркета с двумя кассами. Возможно, вам придется расширить этот код в зависимости от ваших конкретных требований.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili