Хорошо, я изучаю многопоточность в C++ 11, используя Mac. Насколько я знаю, все потоки выполняются одновременно. Я нашел следующий код из hereмногопоточность в C++ 11?
// thread example
#include <iostream> // std::cout
#include <thread> // std::thread
void foo()
{
std::cout << "\nIn foo \n";
}
void bar(int x)
{
std::cout << "\nIn bar \n";
}
int main()
{
std::thread first (foo); // spawn new thread that calls foo()
std::thread second (bar,0); // spawn new thread that calls bar(0)
std::cout << "main, foo and bar now execute concurrently...\n";
// synchronize threads:
first.join(); // pauses until first finishes
second.join(); // pauses until second finishes
std::cout << "foo and bar completed.\n";
return 0;
}
Каждый раз, когда я запускаю код, я получаю странные результаты, как в следующем примере
м
aIIinnn, бф aofroo O
и bar теперь выполняется одновременно ... foo и bar завершены.
что мне не хватает?
ЭТО НЕ ДУБЛИКАЦИЯ СВЯЗАННОГО ОТВЕТА. Несмотря на названия, OP здесь не задает общий вопрос о std :: cout: он задает вопрос о конкретной проблеме, которая может привести к конкретным ответам (как это фактически предлагается до закрытия). Не стоит закрывать дубликат. По крайней мере, не так. –