Существует ли какая-либо многопоточная библиотека / фреймворк пользовательского режима для C ++ под Linux? - PullRequest
4 голосов
/ 21 июля 2009

Я ищу многопоточную библиотеку / фреймворк пользовательского режима для C ++ под Linux. Я знаком с boost :: thread и ACE_Thread_Manager, но AFAIK оба они в конечном итоге используют поддержку собственных потоков ОС.

Предложения будут высоко оценены.

Ответы [ 5 ]

7 голосов
/ 21 июля 2009

GNU PTH: http://www.gnu.org/software/pth/

В нем используется кооперативная многопоточность, поэтому он используется в GnuPG (который из соображений безопасности не хочет реальных потоков, а из-за отзывчивости нужны потоки).

2 голосов
/ 21 июля 2009

MTasker - это то, что вы ищете? Это также кооперативная многозадачная библиотека. Вы также можете подумать о том, чтобы просто взбить некоторые автоматы.

Также проверьте Потоки состояния и MIT Pthreads .

Этот инструмент поможет в создании иерархических конечных автоматов, которые можно использовать для этой цели: CHSM

1 голос
/ 25 августа 2010

Я писал в этой теме некоторое время назад: http://yz.mit.edu/wp/cooperative-threads-for-cc/.

В то время, когда я сравнивал основные состояния State-Threads и GNU Pth, и, основываясь на не слишком тщательном изучении документации и кода, я с большей уверенностью отошел от взлома систем в ST, чем от Pth, но я не могу вспомнить конкретику. У меня был положительный опыт работы с ST, поэтому я никогда не пробовал Pth.

Единственное, что меня беспокоило в ST - это отказ от его (неспособности) взаимодействовать с pthreads. Я использовал оба в одном и том же проекте (еще одна причина, почему Pth, вероятно, не отвечает всем требованиям, заключается в том, что он использует все те же имена символов, что и pthreads), и я никогда не сталкивался с какими-либо проблемами, но я никогда не проверял комбинацию.

Было бы интересно узнать ваш (и другие) опыт WRT этих двух конкретных библиотек.

1 голос
/ 21 июля 2009

Если вы хотите создать поток для операций типа io, вы можете рассмотреть возможность мультиплексирования с помощью выберите

1 голос
/ 21 июля 2009

Возможно, вы захотите проверить Intel Thread Building Blocks. (Т)

http://www.threadingbuildingblocks.org/

Он пытается абстрагироваться от многопоточности от программиста, в то время как он / она использует более сложный подход к параллелизму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...