Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Нити и доступ к общим данным


Автор: Foror 17.5.2003, 10:00
У меня есть массив из 23 структур, к элементам этого массива должны иметь доступ одновременно 23 потока. Так вот такое можно реализовать(т.е. ни каких глюков не будет)? Также мне необходимо создать шаблонную ф-ию, в которой будут обрабатываться данные элементы, но к этой ф-ии также должны иметь доступ одновременно все те 23 потока. В общем как это все сделать? Если не сложно покажите пример или ссылку где это можно почитать.

Автор: Unregistered 17.5.2003, 10:02
Кста вот задание(если выше что-то не совсем ясно):

/*
Разработать программную модель парикмахерской, имеющей три кресла, три
парикмахера и зал, в котором до четырех клиентов может поместиться на диване, а
остальные - стоя, проичем правила ограничивают общее число клиентов внутри помещения
значением 20.
Клиент не может войти в парикмахерскую, если она полностью заполнена другими
клиентами. Оказавшись внутри, клиент либо присаживается на диван, либо стоит, если все
места на диване заняты. Когда какой-то из парикмахеров освобождается, к нему направляется
наиболее долго ожидавший клиент с дивана. Если имеются стоящие клиенты, то тот из них, кто
ожидает дольше других, присаживается на диван. По окончанию стрижки клиент берет счет от
парикмахера и оплачивает стрижку в кассе, которая может одновременно обслуживать только
одного клиента. После оплаты счет возвращается парикмахеру, который до этих пор ожидает,
отдыхая. Каждый парикмахер может находиться в состоянии работы, ожидания оплаты и
дремоты в своем кресле в ожидании очередного клиента.
Построить программную модель в Windows как многопоточную с синхронихацией
семафорами. Длительность этапов функционирования отдельного моделируемого объекта -
клиента, парикмахера, кассира - задавать генератором случайных чисел (функцией рандом или
подобной ей). Поведение модели должно отображаться на экране в текстовом режиме с
помощью текстов и символов по усмотрению разработчика.
*/

Автор: man2002ua 17.5.2003, 11:45
Во-первых, ограничиваемся только 3 потоками - каждый поток, это парикмахер.
Стоячие места в помещении - стек FIFO (очередь) на 20 элементов, сидячия - на 4 элемента.
Потоки (парикмахеры) - работают только с сидячим стеком smile.gif (прикольное название).

Идея ясна? Боюсь целиком реализовывать тебе этот алгоритм никто не будет, но на вопросы - пожалуйста.

Автор: DENNN 18.5.2003, 14:29
Цитата
как многопоточную с синхронихацией
семафорами.

Это собственно ответ на вопрос, как сделать так чтоб ничего не глючило при одновременном доступе к данным из разных потоков. smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)