Программа на потоки

Иван17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
13.05.2010

Задание на программу:

Разработать многопоточную программу, демонстрирующую решение приведённой ниже задачи, используя объекты синхронизации и функции ожидания (описаны в прилагающейся статье).

Условия задачи:

Представьте, что вы стали участником игры, в которой вы находитесь перед тремя дверями. Ведущий, о котором известно, что он честен, поместил за одной из дверей автомобиль, а за двумя другими дверями — по козе. У вас нет никакой информации о том, что за какой дверью находится. Ведущий говорит вам: «Сначала вы должны выбрать одну из дверей. После этого я открою одну из оставшихся дверей, за которой находится коза. Затем я предложу вам изменить свой первоначальный выбор и выбрать оставшуюся закрытую дверь вместо той, которую вы выбрали вначале. Вы можете последовать моему совету и выбрать другую дверь, либо подтвердить свой первоначальный выбор. После этого я открою дверь, которую вы выбрали, и вы выиграете то, что находится за этой дверью.»

НАПРИМЕР.

Вы выбираете дверь номер A. Ведущий открывает дверь номер B и показывает, что за ней находится коза. Затем ведущий предлагает вам выбрать дверь номер C. Увеличатся ли ваши шансы выиграть автомобиль, если вы последуете его совету?

Требования:

1. Игроку и ведущему должны соответствовать собственные потоки (threads).

2. Во время проведения серии экспериментов потоки не должны прерываться.

3. Информация о том, что находится за каждой из дверей, должна храниться в локальных переменных функции потока "ведущего".

4. Обмен информацией через глобальные переменные между потоками должен быть синхронизирован с помощью объектов синхронизации и функций ожидания.

Требования к интерфейсу программы:

1. Должны быть предусмотрены возможности: начать эксперимент, приостановить, прервать, возобновить.

Или, иначе, предварительно задать количество опытов.

2. Должна быть предусмотрена возможность выбрать одну из двух стратегий для игрока: постоянно подтвержать свой первоначальный выбор, постоянно менять свой выбор.

3. Должна выводиться полная информация о текущих значениях результата эксперимента (количество игр, количество выигрышей, количество проигрышей, расчётная вероятность выигрыша, расчётная вероятность проигрыша).

Visual Studio C++

Срок 3 дня