Разработка многопоточного приложения на c#
Разработать многопоточное приложение с графическим пользовательским интерфейсом, определяющее приближенно методом Монте-Карло величину числа π (3.1415…).
Приложение содержит один головной поток, поддерживающий элементы GUI, и произвольное количество потоков-генераторов, определяющих в непрерывном режиме искомую величину π.
Потоки-генераторы создаются пользователем. Пользователь должен иметь возможность:
- Создать поток.
- Удалить поток.
- Приостановить поток.
- Возобновить исполнение потока.
- Изменить приоритет потока.
При осреднении требуется использовать объект синхронизации: критическую секцию либо мьютекс.
Отображение осредненного значения π на главном окне приложения выполняется головным потоком по таймеру.
Главное окно приложения должно содержать:
- Средство отображения осредненного значения π.
- Средство создания потока.
- Средство выбора потока для управления им.
- Средство удаления потока.
- Средство приостановки потока.
- Средство возобновления исполнения потока.
- Средство изменения приоритета потока.
- Средство графического отображения «нагруженности» потоков (например, Bar-диаграмму).
Рассматривается прямоугольная область в первом координатном квадранте со сторонами, равными 1, и круг единичного радиуса с центром в начале координат.
Многократно в области x на отрезке от 0 до 1 и y на отрезке от 0 до 1 генерируются точки со случайными координатами (распределение равномерное).
Предполагается, что отношение площадей сектора круга (Sc= πR2/4 = π/4) и квадрата (Sr=1) при большом количестве генераций близко к отношению количества Nc точек, попавших в сектор круга, к общему количеству генераций N:
π/4 = Nc/N
Следовательно, π = 4Nc/N.