LINUX.ORG.RU

Многопоточность, С++


0

0

Народ! Никогда не кодил многопоточные приложения на С++, все как то на С писал. Вот теперь понадобилось. Как это делается? %) ТАк же как в Си с помощью pthread? Хотелось бы достать чтото типа того как это было в дельфях года 3 назад(как там щас - хз), был класс Thread, я объявлял свой класс предком которого он являлся и просто выполнял метод Execute и код класса выполнялся в отдельном потоке. В линухе есть чтото подобное? Впринципе могу и через pthread'ы замутить, но там, вроде, по кривее это выглядеть будет...Есть у кого какие мысли по этому поводу?


Сейчас изучаю Intel TBB(osstbb.intel.com) - похоже весьма рульная штука. Там концепция task-parallelizm, т.е. разбить задачу на подзадачи, которые будут раскладываться по любому числу нитей самой либой.

Лицензия - GPLv2 with the runtime exception, т.е. что-то вроде LGPL.

YesSSS ★★★
()
Ответ на: комментарий от kitov

http://softwarecommunity.intel.com/tbbWiki/FAQ/641.htm

Do I have to use Intel’s compilers?

No. You should be able to use any ISO compliant C++ compiler. We have tested it very well on the gnu (gcc) compiler, Intel’s C++ compiler, Microsoft’s compiler, and Apple’s gnu compiler. We have also built with success on a variety of other compilers. Check the web site for update on experiences with different systems and compilers.

YesSSS ★★★
()
Ответ на: комментарий от anonymous

Does TBB support non-Intel hardware, and/or operating systems other than Windows/Linux/Mac OS?

Yes it does. TBB is now truly cross platform and portable across different hardware platforms. One of the more significant processor issues has to do with the difference between weak and strong memory ordering. We have ported TBB to both types successfully, which paves the way for easy ports to other processors.

В download-ах есть бинарники для i386, em64t и itanium.

YesSSS ★★★
()

Ну и если вдруг по каким-то причинам вышеперечисленные библиотеки использовать не хочется/невозможно, то несложно изобразить Runnable самостоятельно - строчек на 50 работы. Ну или на 300, если делать все правильно и написать свои Mutex-ы, Guard-ы, и прочие объектные обертки над примитивами синхронизации (такие штуки позволяют не заморачиваясь писать exception-safe код).

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.