Tạo một hàm mà bạn muốn luồng thực thi, ví dụ:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Bây giờ tạo thread
đối tượng mà cuối cùng sẽ gọi hàm trên như vậy:
std::thread t1(task1, "Hello");
(Bạn cần #include <thread>
truy cập vào std::thread
lớp)
Các đối số của hàm tạo là hàm mà luồng sẽ thực thi, theo sau là các tham số của hàm. Các chủ đề được tự động bắt đầu khi xây dựng.
Nếu sau này bạn muốn đợi luồng hoàn thành thực thi chức năng, hãy gọi:
t1.join();
(Tham gia có nghĩa là luồng đã gọi luồng mới sẽ đợi luồng mới hoàn thành thực thi, trước khi nó tiếp tục thực hiện chính nó).
Mật mã
#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();
}
Thêm thông tin về std :: thread tại đây
- Trên GCC, biên dịch với
-std=c++0x -pthread
.
- Điều này sẽ hoạt động cho bất kỳ hệ điều hành nào, được cấp trình biên dịch của bạn hỗ trợ tính năng này (C ++ 11).