Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 20:22   #1
adrinaline
Новичок
Джуниор
 
Регистрация: 17.05.2011
Сообщений: 2
По умолчанию Обьясните как начать эту прогу.

Собствено,немогу не как понять как начать программу, если дать какуето програмку простую готовую я её понимаю,а вот чтоб написать ваще не как немогу понять ,с чего начать и тому подобное.Помогите хоть началом этого вот задания:
Зарание благодарен за любую помощ.

Многопоточное консольное приложение С++.
Основной поток запускает X (1 < X <= 64) вспомогательных потоков. X –
первый параметр командной строки. Каждый из вспомогательных потоков
бесконечно (с некоторой изменяющейся задержкой) добавляет в некий общий
контейнер свой элемент. При этом он удаляет самый старый элемент в
случае, если тот был добавлен другим потоком или если количество
элементов в контейнере > Y (Y - второй параметр командной строки).
Основной поток ожидает любого ввода из командной строки (например
нажатия на Enter). После получения ввода из командной строки основной
поток должен распечатать статистику вида '<поток> - <количество
элементов для этого потока в контейнере>’ для всех потоков
(вспомогательные потоки больше использоваться не будут) и максимальное
зарегистрированное количество элементов в контейнере. После этого
приложение должно корректно завершиться.
Основные условия и требования:
1. Формат командной строки ‘test_app X Y’.
2. Y – целое число (size_t) на величину которого ограничение не
накладывается (в рамках ограничения типа переменной).
3. Код должен безопасно обрабатывать возможные исключения, т.е
предполагается что любой из потоков может формировать С++ исключение в
любой точке кода. При этом общая работоспособность приложения должна
сохраняться, либо приложение должно корректно завершиться если
исключение произошло в основном потоке.
4. Код должен быть обьектно ориентирован.
5. Приложение должно обеспечивать оптимальную скорость (в рамках С++,
т.е. без использования ассемблерных вставок e.t.c.) как для накопления,
так и для отображения статистики.
adrinaline вне форума Ответить с цитированием
Старый 18.05.2011, 00:20   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

adrinaline

мдэ. походу, ты попал o_0
создавать многопоточные программы гораздо сложнее чем однопоточные. в них бывают ошибки специфичные для этого класса программ, как то:

Deadlock - взаимная блокировка потоков на общих объектах синхронизации, при которой работа программы полностью "замораживается"

Data Race - гонка данных, когда потоки одновременно читают и записывают общий ресурс, что приводит к его порче

Race Сondition - гонка состояний, возникает если работа алгоритма зависит от порядка выполнения потоков и при этом очередность исполнения не синхронизируется

судя по вопросам, все это тебе предстоит испытать на собственной шкуре.

что качается безопасности исключений:
в C++ есть поддержка многопоточности - см. _beginthreadex, но обработку исключений придется делать самому.
Забавно, что встроенных объектов синхронизации нет (по крайней мере, до c++0x)

с чего начать и тому подобное

с чтения книжек. Например Рихтера. Примеры в книге орентированы на Windows, но очень хорошо объясняется работа с потоками.
Rififi вне форума Ответить с цитированием
Старый 18.05.2011, 00:41   #3
adrinaline
Новичок
Джуниор
 
Регистрация: 17.05.2011
Сообщений: 2
По умолчанию

спс за ответ
adrinaline вне форума Ответить с цитированием
Старый 13.03.2012, 12:00   #4
MicRaiS
 
Регистрация: 02.03.2011
Сообщений: 5
По умолчанию

ти уже написал ету прогу скинь мне пожалуйста ее на
dmitiry_tsurkan@ymail.com
спасибо
MicRaiS вне форума Ответить с цитированием
Старый 13.03.2012, 15:06   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
ти уже написал ету прогу скинь мне пожалуйста ее на
dmitiry_tsurkan@ymail.com
спасибо
Бугагашенька! ДА!
Он уже разобрался как пользоваться семафорами, критическими секциями и мьютексами! Буквально за пару часов! И отладил 64 поточное приложение.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 13.03.2012, 15:29   #6
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Буквально за пару часов!
ТС запросто мог, ведь с 17.05.2011, 20:22 много воды утекло.
MicRaiS устанет ждать не поэтому.
EUGY вне форума Ответить с цитированием
Старый 13.03.2012, 15:37   #7
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Ах тыж ежик!
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даже не знаю с чего начать прогу на С dma Общие вопросы C/C++ 2 07.03.2010 17:16
Стоит ли браться за эту прогу? Goblin Софт 3 09.07.2009 19:28
Обьясните прогу, plz. Stager Общие вопросы C/C++ 5 19.01.2009 00:55
помогите начать раскручивать прогу DelphiForever Свободное общение 8 23.10.2007 07:59