Я могу одновременно запускать максимум 5 потоков, что позволяет использовать 5 отдельных аппаратных средств для ускорения выполнения некоторых сложных вычислений и возврата результата. API (содержит только один метод) для каждого из этих аппаратных средств не является потокобезопасным и может работать только в одном потоке в любой момент времени. После завершения вычисления тот же поток можно повторно использовать для запуска другого вычисления на том же или другом оборудовании в зависимости от доступности. Каждое вычисление автономно и не зависит от результатов других вычислений. Следовательно, до 5 потоков могут завершить свое выполнение в любом порядке.
Какое решение для кодирования на C# (с использованием .Net Framework 2.0) является наиболее эффективным для отслеживания того, какое оборудование свободно/доступно, и назначения потока соответствующему аппаратному API для выполнение вычислений? Обратите внимание, что кроме ограничения в 5 одновременно работающих потоков, я не могу контролировать, когда и как запускаются потоки.
Пожалуйста, поправьте меня, если я ошибаюсь, но решение без блокировки является предпочтительным, поскольку я считаю, что оно приведет к повышению эффективности и более масштабируемому решению.
Также обратите внимание, что это не домашнее задание, хотя это может звучать так. ..
Подробнее здесь: https://stackoverflow.com/questions/765 ... ollowing-s