Новое На Форуме

 Форум:  Тема: Ответов: Последний:
 МК \"Острофф\"  МК \"Остроф\"!!!!!! 7482 accutane and kidney
 Флудильня  Как и Где расслабиться после сесии? 14 lyo1ya
 Флудильня  Баги сайта обсуждаются тут 16 wowanko
 Флудильня  MKM-83 40 _Nickolas_
 Флудильня  Тип ОС 18 wowanko
 Флудильня  Как сделать сайт интересным? 1 lapaKusapa
 Флудильня  Интернет-браузер 6 _Nickolas_

Главная Страница
Опубликовал: wish :: 17.12.2008 :: Просмотров: 492
#374: А делать-то нам нечего!
Категория: Софт

Наверняка вы знаете, что часто причиной тормозов некоторых коммерческих программ являются закладки в коде типа:
for(i = 0; i < 100000000; i++);
на самых часто используемых операциях: отрисовка окна, реакция на событие и т.д. Но иногда бывают случаи, когда подобная закладка несет полезную нагрузку.

Итак, нужно было сделать курсовую, иллюстрирующую, как несколько потоков разделяют общей ресурс – очередь. Одновременно потоки добавляют в очередь данные, а затем считывают из нее то, что добавили. Реализовал на C в Knoppix с использование pthread. Но веселье началось, когда я понял, судя по выводу проги, что потоки выполняются не одновременно, а поочередно.

Два дня и две ночи разбирался в чем дело. Поставил вывод промежуточных результатов после каждого добавления в очередь. Смотрю в логи – работают потоки одновременно, в очередь кидают как надо данные – все в порядке. К слову, семафоры у меня стояли правильно и никаких потерей указателя на очередь не было. Вырубаю ведение логов – потоки упрямо идут друг за дружкой.
После 5-часовой медитации и курения исходников до меня дошло – ведение логов и заставляло прогу работать правильно! При операциях ввода-вывода между добавлением данных в очередь теряется часть времени достаточная, чтобы хоть немного потоки поработали вместе.

После добавления аналога: for(i = 0; i < 100000000; i++) в поток, я заплакал над убитыми впустую выходными...

Пользователи, пока что, не говорили Спасибо!

Спасибо!
 (Голосов: 0)


Комментарии - 0 :: Главная Страница

Раздача ICQ

Извините, но на этой странице запрещено автоматическое получение номера ICQ.

Сообщить Администратору О Ошибке

Информация

Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...

Сообщить Администратору О Ошибке



Students :: 1999-2008 (Все Права неЗащищены)
При использовании материалов сайта ссылка на stud.net.ua необязательна, но крайне желательна! :)