LINUX.ORG.RU

Потоки, нити


0

0

Проблема такая. Читаю из файла в буферы (всего их пять) - это первая нить. Выполняю над ними 2 операции - это еще две нити. Т.е. буфер один заполнился, разрешается первая операция, после нее вторая и т.д. Блокировки буферов с помощью семафоров.

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

Что может быть не так?

anonymous

Так, по идее, многопоточное приложение очень часто бывает медленнее однопоточного

anonymous
()

RE:

А почему должно быть быстрее? У тебя же ничего параллельно не выполняется, как я понял. Да даже если бы и выполнялось, то машина может не SMP/SMT ;)

Murr ★★
()
Ответ на: RE: от Murr

Параллельность в том, что много буферов. Операции над ними разделены на три части. У всех трех операций разное время выполнения. Т.е., чем больше буферов, тем в сумме быстрее. Понятно, если буфер один, то ничего не улучшается.

После работы с первой операцией, буфер доступен для второй, но первая операция продолжается с другим буфером и т.д.

И в таком духе. Если прикинуть на бумаге получается офигенно быстро.

anonymous
()

ну тогда осталось догадаться прикинув на бумаге, что проц не резиновый, и выигрыш получится(небольшой) только когда все будет упираться не в проц а в ввод-вывод... типа dd if=/dev/hda | обрабатывалка >/dev/null ;)

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

то-есть сколько времени его "снаружи" продержали, столько и выигрыш.

HTH

anonymous
()

реальный выйгрыш будет если у тебя будет много процессоров
и еще у тебя выйгрыш будет расти после того как последний обработчик
начнет работать над первым буфером. Тобиш если пять обработчиков то
нормальный режим SMP появится после начала работы пятого.

anonymous
()

Мож лучшай каждый нить пусть читать свой пуффер аднавременна. Мыслить нада паралельна и тохда праграммаы будють параллельна. Майк Джонсон Вашингтон США

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.