Добрый вечер! Получил задание с определенным условием, а именно "разделить операции на потоки и синхронизацию потоков выполнять с помощью базовых механизмов платформы (без использования Task Parallel Library и concurrent-коллекций)". Как можно это реализовать? допустим, необходимо разбить работу программы на несколько потоков: первый поток обходит каталоги, ищет файлы, для которых нужно выполнить расчет, и помещает их в очередь. Рабочие потоки извлекают из очереди описания файлов и выполняют для их содержимого расчет хэш-суммы.
Опыта программирования на C# нет, только Java и С++, но человеку надо сделать на C#.
Создаёте две нити(Thread), одну коллекцию "Очередь"(Queue), первая нить добавляет элементы в коллекцию, вторая извлекает. Операции добавления и извлечения оборачиваете в lock(obj), где obj объект доступный обоим потокам. Всё задача решена.
В C# Вам доступен класс Thread
(по ссылке есть примеры использования) аналогичный такому же в Java, который в качестве параметра конструктора принимает некий делегат аналогичный Runnable
в Java.
Есть базовый официальный пример на MSDN, который в целом очень похож на то, что можно делать с потоками Java.
Советую ещё заглянуть сюда в главу 15, где описаны примеры работы с мьютексами и семафорами. Ну, и если нужно запустить несколько потоков и дождаться, пока все они закончат работу, то для этого есть класс Barier
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, есть ответ полученный для httpClientОтвет считываю не в строку, а в поток (т
Добрый день, стоит такая цель : синхронизироваться с почтой и иметь возможность загружать/скачивать письмаЕсть ли такая возможность ? желательно...