Создайте функцию, которую вы хотите, чтобы поток выполнял, например:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Теперь создайте thread
объект, который в конечном итоге вызовет функцию, описанную выше, следующим образом:
std::thread t1(task1, "Hello");
(Вам необходимо #include <thread>
получить доступ к std::thread
классу)
Аргументы конструктора - это функция, которую будет выполнять поток, за которой следуют параметры функции. Поток автоматически запускается при строительстве.
Если позже вы захотите дождаться завершения потока, выполняющего функцию, вызовите:
t1.join();
(Присоединение означает, что поток, вызвавший новый поток, будет ожидать завершения нового потока, прежде чем он продолжит свое собственное выполнение).
Код
#include <string>
#include <iostream>
#include <thread>
using namespace std;
// The function we want to execute on the new thread.
void task1(string msg)
{
cout << "task1 says: " << msg;
}
int main()
{
// Constructs the new thread and runs it. Does not block execution.
thread t1(task1, "Hello");
// Do other things...
// Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution.
t1.join();
}
Больше информации о std :: thread здесь
- На GCC, скомпилировать с
-std=c++0x -pthread
.
- Это должно работать для любой операционной системы, если ваш компилятор поддерживает эту функцию (C ++ 11).