Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: vregess от Декабрь 17, 2011, 19:27



Название: QEventThreadPool
Отправлено: vregess от Декабрь 17, 2011, 19:27
Хочу поделиться одной наработкой.
Библиотека QEventThreadPool - пул потоков.

Основные возможности:
  * Поддержка потоков с циклом событий (event loop), в отличии от QThreadPool - можно использовать сигналы и слоты в "воркерах".
  * 2 типа пулов:
     - пул с "эксклюзивными" потоками: к потоку можно присоединить только один объект;
     - пул с "общими" потоками - можно присоединить несколько объектов.
  * Вызов определенных слотов "воркера" (если они есть) при добавлении в пул:
     - init() - сразу после присоединении к потоку
     - run() - после init()
     - uninit() - перед отсоединением от потока.
  * Отложенное добавление в пул.

Основная цель библиотеки - создать пул потоков с поддержкой signal/slot в "воркерах".
Живет тут: https://github.com/skozlovf/QEventThreadPool (https://github.com/skozlovf/QEventThreadPool)
Там же можно скачать архив.

Нормальной документации пока нет, но есть набор тестов и пара примеров с комментариями на корявом английском.
Для сборки нужен cmake и Qt >= 4.7, тестировал на Win7 и линуксе (убунту).

Возможно я сделал что-то странное, но что-то похожего, к сожалению, не нашел.


Название: Re: QEventThreadPool
Отправлено: BRE от Декабрь 17, 2011, 19:41
но что-то похожего, к сожалению, не нашел.
После прочтения описания в голове появилась ассоциация с threadweaver.


Название: Re: QEventThreadPool
Отправлено: vregess от Декабрь 18, 2011, 15:27
После прочтения описания в голове появилась ассоциация с threadweaver.

Видимо речь о KDE ThreadWeaver (http://api.kde.org/4.0-api/kdelibs-apidocs/threadweaver/html/index.html (http://api.kde.org/4.0-api/kdelibs-apidocs/threadweaver/html/index.html)) ?
Да, действительно что-то похожее.. Буду почитать доки, спасибо.

Как-то в голову не пришло посмотреть в сторону KDE, видимо потому что делал свою реализацию для винды.
Если их версия будет включать в себя функционал QEventThreadPool и ThreadWeaver можно отодрать от KDE, то похоже я зря писал библиотеку)


Название: Re: QEventThreadPool
Отправлено: BRE от Декабрь 18, 2011, 16:11
то похоже я зря писал библиотеку)
Вовсе не зря. ThreadWeaver не особо развивается, по крайней мере в те моменты, когда я на нее натыкался... :)


Название: Re: QEventThreadPool
Отправлено: vregess от Декабрь 18, 2011, 22:05
Все еще изучаю ThreadWeaver. Немного разные идеологии.
Еще раз спасибо, BRE, что ткнул носом в ThreadWeaver, есть там интересные идеи навроде зависимостей задач.
От развития своей версии пока решил не отказываться.