Create a function that you want the thread to execute, eg:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Now create the thread
object that will ultimately invoke the function above like so:
std::thread t1(task1, "Hello");
(You need to #include <thread>
to access the std::thread
class)
The constructor's arguments are the function the thread will execute, followed by the function's parameters. The thread is automatically started upon construction.
If later on you want to wait for the thread to be done executing the function, call:
t1.join();
(Joining means that the thread who invoked the new thread will wait for the new thread to finish execution, before it will continue its own execution).
The Code
#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();
}
More information about std::thread here
- On GCC, compile with
-std=c++0x -pthread
.
- This should work for any operating-system, granted your compiler supports this (C++11) feature.