Какой самый простой способ создания многопоточных приложений с C / C ++? - PullRequest
6 голосов
/ 02 октября 2009

Какой самый простой способ создания многопоточных приложений с C / C ++?

Ответы [ 15 ]

2 голосов
/ 02 октября 2009

Спецификация C ++ 0x включает возможности потоков (одна из моих избранных новых функций). Вскоре не будет иметь значения, для какой ОС вы компилируете! Просто посмотрите, как легко создать новую тему и присоединиться к ней:

#include <thread>
#include <iostream>

class SayHello
{
public:
    void operator()() const
    {
        std::cout<<"hello"<<std::endl;
    }
};

int main()
{
    std::thread t((SayHello()));
    t.join();
}

Visual Studio 2010 реализует части C ++ 0x, но мы все еще ждем возможности потоков.

1 голос
/ 03 октября 2009

Самый простой способ - избежать / минимизировать изменяемое общее состояние.

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

1 голос
/ 03 октября 2009

Это полностью зависит от того, что вы делаете. Если вы можете вписать то, что вы делаете в OpenMP, то это путь. В противном случае вы можете посмотреть на TBB Intel . TBB предлагает несколько рабочих процессов, в которые вы можете вписаться, но библиотека имеет двойную лицензию, и вы не сможете принять ни одну из этих лицензий. Если оба OpenMP и TBB отсутствуют, вам следует рассмотреть возможности пулов потоков в вашей операционной системе.

В какой-то момент вам может понадобиться прикусить пулю и использовать Boost.Thread. Если это так, вы захотите взглянуть на , что делает многопоточность в C ++ сложной (хорошо читать, даже если вы не используете C ++ 0x: «Это не сами потоки, а связь проблемы. Изменяемое общее состояние вводит неявное общение, "стр. 3).

1 голос
/ 03 октября 2009

Posix Thread довольно хорош, они также поставляются с отличной документацией и учебными пособиями.

Не так просто, как потоки Java, но все же довольно хорошо.

1 голос
/ 02 октября 2009

Я бы сказал, с Qt . Вероятно, стоит погуглить на Qt Threads и Qt Concurrency.

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