Форум программистов, компьютерный форум CyberForum.ru

Задача по многопоточному программированию - C++

Восстановить пароль Регистрация
 
serste
Сообщений: n/a
17.10.2011, 18:48     Задача по многопоточному программированию #1
Здравствуйте!

Я новичок в многопоточном программировании, необходимо было выполнить тестовое задание:

Используя С++, Win32 API и STL корректно реализовать следующую задачу:
Откуда-то дано:
class Request
{
};
// возвращает NULL если нужно завершить процесс, либо указатель на память,
// которую в дальнейшем требуется удалить
Request* GetRequest() throw();
// обрабатывает запрос, но память не удаляет
void ProcessRequest(Request* request) throw();
const int NumberOfThreads = 2;

Основной поток должен:
1) Запустить несколько рабочих потоков (NumberOfThreads).
2) Класть в одну очередь заданий задачи до тех пор, пока GetRequest() не вернёт NULL.
3) Корректно остановить рабочие потоки. Они должны доделать текущий ProcessRequest, если он имеется, и остановиться. Если имеются необработанные задания, не обращать на них внимания.
4) Завершить программу.
Рабочий поток должен:
1) Обрабатывать поступающие через очередь запросы с помощью ProcessRequest.
2) Завершиться, как только основной поток ему это скомандует.
Вызовы GetRequest() и ProcessRequest() могут работать долго.

В ответ на это задание я написал код, содержащийся в приложении.

Мне было сказано, что этот код имеет два недостатка (в данном случае это эквивалентно тому, что данный код - один сплошной недостаток smile.gif ):
1) плохое знание WinAPI: объекты синхронизации
2) код написан с использованием опасных конструкций в плане обработки исключений

Если возможно, хотелось бы, чтобы кто-нибудь рассказал мне, что именно в данном коде не правильно
Вложения
Тип файла: zip Task.zip (8.9 Кб, 63 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 18:48     Задача по многопоточному программированию
Посмотрите здесь:

C++ Задача по программированию
Задача по программированию C++
Олимпиадная задача по программированию C++
C++ не решается задача по параллельному программированию
C++ Задача по программированию. Цикл For
C++ Задача по программированию. (Без использования массива)
Задача с массивами по системному программированию C++
C++ задача по программированию С++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru