|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.05.2011, 20:22 | #1 |
Новичок
Джуниор
Регистрация: 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.) как для накопления, так и для отображения статистики. |
18.05.2011, 00:20 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
adrinaline
мдэ. походу, ты попал o_0 создавать многопоточные программы гораздо сложнее чем однопоточные. в них бывают ошибки специфичные для этого класса программ, как то: Deadlock - взаимная блокировка потоков на общих объектах синхронизации, при которой работа программы полностью "замораживается" Data Race - гонка данных, когда потоки одновременно читают и записывают общий ресурс, что приводит к его порче Race Сondition - гонка состояний, возникает если работа алгоритма зависит от порядка выполнения потоков и при этом очередность исполнения не синхронизируется судя по вопросам, все это тебе предстоит испытать на собственной шкуре. что качается безопасности исключений: в C++ есть поддержка многопоточности - см. _beginthreadex, но обработку исключений придется делать самому. Забавно, что встроенных объектов синхронизации нет (по крайней мере, до c++0x) с чего начать и тому подобное с чтения книжек. Например Рихтера. Примеры в книге орентированы на Windows, но очень хорошо объясняется работа с потоками.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
18.05.2011, 00:41 | #3 |
Новичок
Джуниор
Регистрация: 17.05.2011
Сообщений: 2
|
спс за ответ
|
13.03.2012, 12:00 | #4 |
Регистрация: 02.03.2011
Сообщений: 5
|
|
13.03.2012, 15:06 | #5 | |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Цитата:
Он уже разобрался как пользоваться семафорами, критическими секциями и мьютексами! Буквально за пару часов! И отладил 64 поточное приложение.
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
|
13.03.2012, 15:29 | #6 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
MicRaiS устанет ждать не поэтому. |
|
13.03.2012, 15:37 | #7 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 505
|
Ах тыж ежик!
Знающий не говорит, говорящий не знает (С) Лао Цзы
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
даже не знаю с чего начать прогу на С | 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 |