Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 896
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 441
∙ повысить рейтинг >>
Серг aka umbSSE
Статус: 10-й класс
Рейтинг: 236
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1360 от 27.07.2009, 11:05
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 637, экспертов - 157
В номере: вопросов - 1, ответов - 1

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 170685: Добрый день. C++ Builder 2009 Для увеличения быстродействия использую потоки. Основная процедура расчета разбита на 4 потока, все выполняются одновременно. while (True) { //Готовлю данные ... //Запускаю Raschet1 *...



Вопрос № 170685:

Добрый день.
C++ Builder 2009
Для увеличения быстродействия использую потоки. Основная процедура расчета разбита на 4 потока, все выполняются одновременно.

while (True)
{
//Готовлю данные
...
//Запускаю
Raschet1 *Thr1 = new Raschot1(True);
Thr1->Resume();
Raschet1 *Thr2 = new Raschet1(True);
Thr2->Resume();
Raschet1 *Thr3 = new Raschet1(True);
Thr3->Resume();
Raschet1 *Thr4 = new Raschet1(True);
Thr4->Resume();

//Жду завершения
Thr1->WaitFor();
Thr2->WaitFor();
Thr3->WaitFor();
Thr4->WaitFor();
//Удаляю
Thr1->Free();
Thr2->Free();
Thr3->Free();
Thr4->Free();

}

В принципе, все работает, но быстродействия достичь не удалось. Загрузка Core 2 Duo составляет 40-60%, ядра загружаются равномерно. Как показал ряд экспериментов, процессор простаивает на WaitFor().
Как уменьшить время простоя и увеличить с корость работы?

Отправлен: 22.07.2009, 10:45
Вопрос задал: Yandrey, Практикант
Всего ответов: 1
Страница вопроса >>


Отвечает AMV007, 3-й класс :
Здравствуйте, Yandrey.

1. Если цикл быстро крутиться - то вся нагрузка будет на ядро системы, так как оно будет занято только созданием - удалением потоков. Поэтому потоки должны иметь работу скажем на 1-2 секунды хотя бы, чтобы реально почувствовать эффект от многопоточности таким способом.
2. Если поток надо экстренно завершить без долгого ожидания то лучше всего использовать Terminate().
3. Если не удовлетворяет механизм waitfor, то можно использовать CreateEvent и соответственно WaitforsingleObject


Raschet1 *Thr1 = new Raschot1(True);
Raschet1 *Thr2 = new Raschet1(True);
Raschet1 *Thr3 = new Raschet1(True);
Raschet1 *Thr4 = new Raschet1(True);
Thr1->Resume();
Thr2->Resume();
Thr3->Resume();
Thr4->Resume();

while(true)
{
}


//Жду завершения
Thr1->Terminate();
Thr2->Terminate();
Thr3->Terminate();
Thr4->Terminate();

Thr1->WaitFor();
Thr2->WaitFor();Thr3->WaitFor();
Thr4->WaitFor();
-----
Работать, работать и еще раз работать (да не, шутка :) )

Ответ отправил: AMV007, 3-й класс
Ответ отправлен: 22.07.2009, 11:04

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252465 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.5 от 08.07.2009

    В избранное