Створіть функцію, для якої потрібно виконати потік, наприклад:
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).