Название: QSemaphores & QThreads помогите задачку решить Отправлено: doom от Апрель 20, 2010, 10:23 Пусть Есть n пассажирских потоков и поток(QThread) автомобилей.
Пассажиры ждут, чтобы сесть в автомобиль и прокатится. Автомобиль может содержать C пассажиров, где C <n. Автомобиль может поехать по кругу только тогда, когда он заполнен. Ниже приведены некоторые дополнительные сведения: • Пассажиры должны вызывать методы board и unboard. • Автомобиль должнн вызывать методы load(нагрузки), run(запуска) и unload(выгрузки). • Пассажиры не могут сесть в машину, пока Автомобиль не вызывет метод load(нагрузки) • автомобиль не может уехать пока не наберет C пассажиров. • Пассажиры не могут вызывать метод unboard пока автомобиль не вызывет метод unload(выгрузки). Название: Re: QSemaphores & QThreads помогите задачку решить Отправлено: garryHotDog от Апрель 20, 2010, 17:01 Много писать не буду времени нет, простой вариант.
-Автомобиль - поток т.к. есть run -Пассажир - поток -объвлены семафоры Цитировать Пассажиры должны вызывать методы board и unboard. зедсь думую понятно - board,unboard - работаешь с семаформи автомобиля.Цитировать Пассажиры не могут сесть в машину, пока Автомобиль не вызывет метод load(нагрузки) 1 . у класса автомобиля модно сделать флаг (bool) -bool m_canLoad - Этот флаг будет выставляться функцией load, пассажиры в потоке периодически (или по таймеру ) считываю переменную (чтение - потокобезопасная операция) 2. или реализовать с помощью сигналов\слотов, например CAvto::signal_load() ->CPass::slot_load(); второй вариант,думую, по проще Цитировать автомобиль не может уехать пока не наберет C пассажиров. 1 . Класс автомобиля, после того как выставил флаг m_canLoad проверяет сколько "в него село " пассажиров.2. либо при посадке пассажир посылает сигнал, а класс автомобиля принимая его увеличивает счетчик, одновременно проверяя его Цитировать Пассажиры не могут вызывать метод unboard пока автомобиль не вызывет метод unload(выгрузки). аналогично нагрузки----- Название: Re: QSemaphores & QThreads помогите задачку решить Отправлено: Igors от Апрель 20, 2010, 17:46 Хорошая задачка :) Раньше такие на GPSS давали
Нужен совет как сделать или просто списать? Название: Re: QSemaphores & QThreads помогите задачку решить Отправлено: doom от Апрель 22, 2010, 13:20 Хорошая задачка :) Раньше такие на GPSS давали Нужен совет как сделать или просто списать? просто списать у меня таких еще 5. хотел бы по етому примеру остальные зделать. заранее спасибо. Название: Re: QSemaphores & QThreads помогите задачку решить Отправлено: Igors от Апрель 22, 2010, 16:22 Attachment
|