Задача на многопоточность [требует правки]

419
22 октября 2017, 19:13

В институте задали задачу по с#. Не могу решить ее:

В работе необходимо реализовать многопоточную обработку массива структур данных (из N элементов) четырьмя способами: 1. При помощи массива из M потоков (M ≤ N), используя для синхронизации объект ядра — семафор. 2. При помощи массива из M потоков (M ≤ N), используя для синхронизации сеть Петри, моделирующую семафор. 3. При помощи пула из M потоков (M ≤ N), используя сис- темный пул потоков или асинхронные потоки ввода/вывода. 4. При помощи пула из M потоков (M ≤ N), моделируя его при помощи сети Петри. При обработке массива данных массивом потоков каждый поток либо заранее выбирает диапазон элементов массива данных, которые он будет обрабатывать, либо просто берет первый необработанный элемент. Завершив обработку одного элемента, поток переходит к обработке следующего. При обработке массива данных пулом потоков, завершив обработку одного элемента массива данных, освободившийся в пуле поток переходит к обработке следующего необработанного элемента. Чтобы не требовалось создавать слишком большие массивы (для которых эффект от параллельной обработки будет наиболее очевидным), можно имитировать ситуацию, когда обработка одного элемента массива требует больше процессорного времени, чем в действительности. Для этого после обработки очередного элемента массива поток может делать паузу на указанное количество миллисекунд. Входной файл должен иметь имя «input.txt» или «input.xml». Формат входного файла представлен в табл. 2.1. 17 Таблица 2.1 — Формат входного файла для лабораторной работы № 2 Поле Значение PA Выбранный способ обработки массива N Размер массива структур данных (значения полей каждой структуры генерируются программой случайным образом) M Количество параллельных потоков (если 0, то принимается равным числу процессорных ядер в системе) PT Пауза после обработки каждого элемента массива (мс) … Дополнительные входные данные (зависят от варианта) Выходной файл должен иметь имя «output.txt». Формат выходного файла представлен в табл. 2.2. Таблица 2.2 — Формат выходного файла для лабораторной работы № 2 Поле Значение T1 Время, требующееся на линейную обработку массива (без распараллеливания вычислений) TP Время, требующееся на параллельную обработку массива выбранным способом … Результаты обработки (зависят от варианта) Для ввода и вывода данных допускается использование в программе визуального интерфейса вместо файлового ввода/вы- вода.

И собственно, само задание.

Ресурсы — преподаватель, принимающий лабораторную работу у студентов, а также лабораторное оборудование. Атрибут преподавателя — ФИО, атрибут оборудования — название и количество D (D ≥ 1). Атрибуты студента — ФИО, номер группы и список оборудования, которое ему необходимо для сдачи лабораторной работы. Алгоритмы планирования: 1. LCFS, nonpreemptive. 2. Round Robin с очередью типа LCFS, относительный приоритет. Для блокировки доступа к преподавателю использовать семафор.

Бьюсь уже 3 дня, использую бубен, ничего не получается.

READ ALSO
Удаление пользователя ASP.NET Identity

Удаление пользователя ASP.NET Identity

Пытаюсь удалить пользователя:

282
Создание простой нейросети

Создание простой нейросети

Доброго времени сутокДопустим хочу сделать простую нейросеть для XOR:

430
Проблема с Unity (Input.GetTouch(0).phase and Input.GetTouch (1).phase)

Проблема с Unity (Input.GetTouch(0).phase and Input.GetTouch (1).phase)

Я чочу чтобы fan[0] и fan[1] вращалис независимы друг другаrot[0] и rot[1] панелы на которых расположыны fan[0] и fan[1]

298
Как разделить объекты на категории в массиве для передачи данных?

Как разделить объекты на категории в массиве для передачи данных?

Я бы хотел разделить обьекты по категориям например чтобы было так: [obj1: {

340