всем здравствуйте.
ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками,
с возможностями вроде учета количества доступных процессоров, распределения потоков
по ним, итд. желательно открытую :)
очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно
посоветуйте ?
Здравствуйте, 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 — немного пугает ее глобальность :) буду читать, пока такой вопрос —
стоит ли ее использовать если мне будет нужная только поточная библиотека, и можно
использовать только ее, и не тянуть лишнего ?
Здравствуйте, kaj, Вы писали:
kaj>всем здравствуйте. kaj>ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками, kaj>с возможностями вроде учета количества доступных процессоров, распределения потоков kaj>по ним, итд. желательно открытую kaj>очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно kaj>посоветуйте ?
Здравствуйте, Аноним, Вы писали:
А>вообще, я до этого немного работал с потоками, только с бустовыми и позиксными. А>а по поводу qt — немного пугает ее глобальность буду читать, пока такой вопрос — А>стоит ли ее использовать если мне будет нужная только поточная библиотека, и можно А>использовать только ее, и не тянуть лишнего ?
Отдельно сложно наверное. Qt тянет за собой препроцессор для поддержки механизма signal/slots. Но он там сильно нужен. Signals/slots позволяет потокам посылать синхронно/асинхронно сигналы друг другу для исполнения в контексте другого потока aka message passing.
Здравствуйте, Timur_SPB, Вы писали:
T_S>Здравствуйте, kaj, Вы писали:
kaj>>всем здравствуйте. kaj>>ищу кроссплатформенную (хоть немного) библиотеку для работы с потоками, kaj>>с возможностями вроде учета количества доступных процессоров, распределения потоков kaj>>по ним, итд. желательно открытую :) kaj>>очень не хочется велосипедить, но что-то не гуглится ничего, как ни странно kaj>>посоветуйте ?
T_S>Советую великий и ужастный BOOST
T_S>тыц1 и тыц2
спс, но буста не хватает
его как раз почти все время и использовал
Здравствуйте, 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[7]: многопоточная библиотека
От:
Аноним
Дата:
23.07.09 11:13
Оценка:
Здравствуйте, kaj, Вы писали:
kaj>Здравствуйте, Аноним, Вы писали:
А>>А в чем проблема?
kaj>если только в зависимостях kaj>сам ни разу не сталкивался, поэтому спрашивал
Будешь собирать статически — линкер все почистит.
Если динамически, то к примеру для винды есть QtCore4.dll для приложений без GUI
и QtGui4.dll, если нужно будет GUI.
А вообще, Qt ты можешь собрать как тебе душе угодно...
Здравствуйте, smithx, Вы писали:
kaj>>а там действительно можно сделать привязку потоков к процессорам (логическим/физ)? kaj>>я пока не нашел
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.
Здравствуйте, 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/, с нее начал