многопоточная библиотека
От: kaj  
Дата: 23.07.09 08:10
Оценка:
всем здравствуйте.
ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками,
с возможностями вроде учета количества доступных процессоров, распределения потоков
по ним, итд. желательно открытую :)
очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно
посоветуйте ?
Re: многопоточная библиотека
От: D14  
Дата: 23.07.09 08:19
Оценка:
Здравствуйте, kaj, Вы писали:

kaj>всем здравствуйте.

kaj>ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками,
kaj>с возможностями вроде учета количества доступных процессоров, распределения потоков

Qt Concurrent и Qt вообще.
Re[2]: многопоточная библиотека
От: Аноним  
Дата: 23.07.09 09:04
Оценка:
Здравствуйте, D14, Вы писали:

D14>Qt Concurrent и Qt вообще.

>Programs written with QtConcurrent automatically adjust the number of threads used according to the number of processor cores available.

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

вообще, я до этого немного работал с потоками, только с бустовыми и позиксными.
а по поводу qt — немного пугает ее глобальность :) буду читать, пока такой вопрос —
стоит ли ее использовать если мне будет нужная только поточная библиотека, и можно
использовать только ее, и не тянуть лишнего ?
Re: многопоточная библиотека
От: smithx  
Дата: 23.07.09 09:45
Оценка:
ACE ?
Re: многопоточная библиотека
От: Timur_SPB Россия  
Дата: 23.07.09 09:46
Оценка:
Здравствуйте, kaj, Вы писали:

kaj>всем здравствуйте.

kaj>ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками,
kaj>с возможностями вроде учета количества доступных процессоров, распределения потоков
kaj>по ним, итд. желательно открытую
kaj>очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно
kaj>посоветуйте ?

Советую великий и ужастный BOOST

тыц1 и тыц2
Re[3]: многопоточная библиотека
От: D14  
Дата: 23.07.09 10:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>вообще, я до этого немного работал с потоками, только с бустовыми и позиксными.

А>а по поводу qt — немного пугает ее глобальность буду читать, пока такой вопрос —
А>стоит ли ее использовать если мне будет нужная только поточная библиотека, и можно
А>использовать только ее, и не тянуть лишнего ?

Отдельно сложно наверное. Qt тянет за собой препроцессор для поддержки механизма signal/slots. Но он там сильно нужен. Signals/slots позволяет потокам посылать синхронно/асинхронно сигналы друг другу для исполнения в контексте другого потока aka message passing.
Re[2]: многопоточная библиотека
От: kaj  
Дата: 23.07.09 10:25
Оценка:
Здравствуйте, smithx, Вы писали:

S>ACE ?


а там действительно можно сделать привязку потоков к процессорам (логическим/физ)?
я пока не нашел
Re[2]: многопоточная библиотека
От: kaj  
Дата: 23.07.09 10:26
Оценка:
Здравствуйте, Timur_SPB, Вы писали:

T_S>Здравствуйте, kaj, Вы писали:


kaj>>всем здравствуйте.

kaj>>ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками,
kaj>>с возможностями вроде учета количества доступных процессоров, распределения потоков
kaj>>по ним, итд. желательно открытую :)
kaj>>очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно
kaj>>посоветуйте ?

T_S>Советую великий и ужастный BOOST


T_S>тыц1 и тыц2


спс, но буста не хватает
его как раз почти все время и использовал
Re[4]: многопоточная библиотека
От: kaj  
Дата: 23.07.09 10:30
Оценка:
Здравствуйте, D14, Вы писали:

D14>Здравствуйте, Аноним, Вы писали:


А>>вообще, я до этого немного работал с потоками, только с бустовыми и позиксными.

А>>а по поводу qt — немного пугает ее глобальность :) буду читать, пока такой вопрос —
А>>стоит ли ее использовать если мне будет нужная только поточная библиотека, и можно
А>>использовать только ее, и не тянуть лишнего ?

D14>Отдельно сложно наверное. Qt тянет за собой препроцессор для поддержки механизма signal/slots. Но он там сильно нужен. Signals/slots позволяет потокам посылать синхронно/асинхронно сигналы друг другу для исполнения в контексте другого потока aka message passing.


понятно
вообще часто бывает, что используют qt, но не используют гуи ?
Re[5]: многопоточная библиотека
От: Аноним  
Дата: 23.07.09 10:41
Оценка:
Здравствуйте, kaj, Вы писали:

kaj>понятно

kaj>вообще часто бывает, что используют qt, но не используют гуи ?

Да, часто.
Даже в самом Qt есть разделение на приложения с GUI и без GUI.

А в чем проблема?
Re[6]: многопоточная библиотека
От: kaj  
Дата: 23.07.09 10:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А в чем проблема?


если только в зависимостях
сам ни разу не сталкивался, поэтому спрашивал
Re[7]: многопоточная библиотека
От: Аноним  
Дата: 23.07.09 11:13
Оценка:
Здравствуйте, kaj, Вы писали:

kaj>Здравствуйте, Аноним, Вы писали:


А>>А в чем проблема?


kaj>если только в зависимостях

kaj>сам ни разу не сталкивался, поэтому спрашивал

Будешь собирать статически — линкер все почистит.
Если динамически, то к примеру для винды есть QtCore4.dll для приложений без GUI
и QtGui4.dll, если нужно будет GUI.

А вообще, Qt ты можешь собрать как тебе душе угодно...
Re[3]: многопоточная библиотека
От: smithx  
Дата: 23.07.09 18:05
Оценка:
kaj>а там действительно можно сделать привязку потоков к процессорам (логическим/физ)?
kaj>я пока не нашел

не, это врядли, а не подскажите какие системные вызовы позволяют такое реализовать ?
Re[4]: многопоточная библиотека
От: kaj  
Дата: 23.07.09 18:48
Оценка: 2 (1)
Здравствуйте, smithx, Вы писали:

kaj>>а там действительно можно сделать привязку потоков к процессорам (логическим/физ)?

kaj>>я пока не нашел

S>не, это врядли, а не подскажите какие системные вызовы позволяют такое реализовать ?


в linux sched_setaffinity(2) http://linux.die.net/man/2/sched_setaffinity
в windows SetThreadAffinityMask http://msdn.microsoft.com/en-us/library/ms686247(VS.85).aspx

в ACE нашел set_affinity http://www.dre.vanderbilt.edu/Doxygen/5.7.1/html/ace/a01968.html#6082f01d7ecc28a1452a6c337d7d86bd
но она работает только с юниксами и позиксными потоками

больше по этому поводу что-то ничего там не видно, а одну функцию я и сам напишу
просто после книжек страуструпа складывается впечатление, что
поточных библиотек под с++ должно быть просто море, но чего-то
сильно круче, чем те же бустовые / позиксные потоки я не нахожу, так что, руками напишу наверное
Re[5]: многопоточная библиотека
От: smithx  
Дата: 23.07.09 21:32
Оценка: +1
спасибо, а зачем (если не секрет) понадобилось такие гайки крутить, а то вот пишут:

Setting an affinity mask for a process or thread can result in threads receiving less processor time, as the system is restricted from running the threads on certain processors. In most cases, it is better to let the system select an available processor.

Re[6]: многопоточная библиотека
От: kaj  
Дата: 24.07.09 08:16
Оценка:
Здравствуйте, smithx, Вы писали:

S>спасибо, а зачем (если не секрет) понадобилось такие гайки крутить, а то вот пишут:


S>

S>Setting an affinity mask for a process or thread can result in threads receiving less processor time, as the system is restricted from running the threads on certain processors. In most cases, it is better to let the system select an available processor.


ну, для начала собираюсь поэксперементировать с этим :)

нужно создать n потоков, чем больше, тем лучше, чтоб распараллелить выполнение
есть критичные, есть фоновые, есть критичные, но, скажем, выполняются не постоянно
(например, большую часть своей работы вып. на ppu)
я все это в отличие от ос знаю, и нужно как минимум по-умному указать приоритеты
я, например, знаю что если вот эти 2 критичных потока будут на одном процессоре, то производительность только понизится,
или что если, скажем, случайно критичный поток уснет, к нему на процессор фоновые (пусть даже долго спящие)
мигрировать лучше не пускать, т.к через фрэйм он должен будет работать по полной, а что другие 10 можно и на одном процессоре крутить

но это все на уровне догадок, а что там из этого выйдет, сам пока не знаю, буду пробовать
мне вот на лоре посоветовали: http://www.threadingbuildingblocks.org/, с нее начал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.