2009-12-10 3 views
2

Какая многопоточная библиотека C++ может использоваться для написания приложений Linux, Windows, Solaris и iPhone? Такие, как:Автономная, независимая от ОС, не зависящая от архитектуры, многопоточная библиотека

Любые другие?

+5

Это должно быть действительно два вопроса. –

+0

Убрали второй вопрос. –

ответ

4

Boost threads - действительно фактический стандарт потоковой передачи C++. Я бы рекомендовал хотя бы ознакомиться с API-интерфейсом Threading Boost, поскольку он более или менее идентичен предстоящему стандартизованному C++ 0x std::thread.

+2

Бустерные ускорители (booboos?) может повлиять на это, но стандарт defacto в той мере, в какой он существует, вероятно, является pthreads. Но большинство людей, пишущих MT-код, с трудом выдерживают очарование особенностей платформы. Или, по крайней мере, я знаю. – 2009-12-10 22:54:24

+0

@Neil - это хороший способ сказать, что потоки boost/C++ 0x - простая ваниль. – Duck

+3

@Neil - Я согласен, что их, вероятно, больше pthread-кода, чем boost. Но учитывая, что std :: thread скоро станет реальным стандартом (не де-факто), и это C++ (не C), я бы сказал, что любой код, написанный с использованием потоков boost, будет более легко переносимым в std :: thread, когда он более широко доступны. –

0

кварты имеет многопоточную поддержку ...

+1

Он делает, но это не так, как хотелось бы. –

0

Вы можете использовать Pthreads и реализовывать свои собственные обертки C++. Это будет очень гибким и портативным, и вы сможете определить интерфейс C++ так, как вам подходит. Это, пожалуй, больше усилий с вашей стороны, чем вы намеревались.

0

Для второй части Вашего вопроса:

Интеграция C++ в Objective-C является чрезвычайно легко; Я добавил C++-библиотеку в свое приложение без проблем. Вы не используете какой-либо специальный синтаксис или что-то еще. У Apple есть good info на Objective-C++, но вы должны уже знать Objective-C, чтобы понять это.

Caveat: Для того, чтобы сделать приложение iPhone, вы имеют знать основные Objective-C; это единственный способ контролировать интерфейс, по крайней мере.

1

FWIW, я не думаю, что все они полностью эквивалентны.

ACE, Boost, Poco и QT - это всего лишь обертки вокруг поддерживаемых поддерживающих платформ. OpenMP и особенно TBB работают, на мой взгляд, на более высоком уровне абстракции и поощряют другой способ рассмотрения проблем.

0

Boost.Thread замечательный .. но не уверен, что он будет работать на iPhone. Если вы нацеливаете iPhone, вы должны просто использовать класс NSThread, в частности его функцию detatchNewThreadSelector, чтобы создать новый поток. Вы можете использовать функцию performSelectorOnMainThread для выполнения работы в потоке событий пользовательского интерфейса.

Проблема с использованием C++ на iPhone заключается в том, что iPhone в настоящее время не поддерживает исключения C++ (он поддерживает исключения «SJLJ», которые используются Objective-C, но не стандартные исключения C++), что означает, что любой код на C++ который использует обработку исключений C++, не сможет ссылаться на iPhone.

+1

Быстрый Google показал, что некоторые люди смогли скомпилировать библиотеку Threading для Boost для iPhone. –

1

Я хотел бы также добавить ПОКО, который недавно был портирован на iPhone:

http://pocoproject.org/blog/?p=208

+0

Слишком сложно создать статическую сборку. Кроме того, он создает каталог, начинающийся с дефиса. –

Смежные вопросы