Я пытаюсь вызвать функцию «Запуск» в новом потоке. Прямо сейчас у меня есть этот код с использованием openMP, который фактически не запускает «Run» в новом потоке. ПРИМЕЧАНИЕ. Я не прошу помощи с помощью OpenMP. Этот код был просто быстрым решением. Я бы предпочел использовать метод CreateThread().Многопоточность с наследованием (C++)
vector<ICommand*>* commands;
string strInput;
// For each command...
for(vector<ICommand*>::iterator i = commands->begin(); i != commands->end(); ++i)
{
// ...if the current command we're examining is valid...
if((*i)->ContainsCommand(strInput))
{
// ...run it in a new thread and don't let ZChatInput handle it normally...
#pragma omp sections nowait
{
#pragma omp section
(*i)->Run(strInput);
#pragma omp section
bRet = false;
}
// ...and don't check any more commands.
break;
}
}
Так как это можно сделать, используя только стандарт и STL? Конечно, я ищу способ, который работает :)
Нет, извините. Я пытаюсь уклониться от сторонних библиотек. Если эта функция находится в VS2010, я попробую ее; но до сих пор все еще не то, что я ищу. Кроме того, вы забыли передать strInput в качестве параметра. –
В чем проблема с boost? Это почти стандарт, как stl. Многие новые библиотеки ускоряются в новом стандарте, и я не буду впечатлен, если новые потоки станут новым стандартом (я знаю, что существует новый стандарт для потоков, но я не знаю, похожи ли они на увеличение потока модель) –
C++ 0x будет иметь потоковые объекты, которые напоминают boost.thread. См. Http://en.wikipedia.org/wiki/C%2B%2B0x#Threading_facilities –