Buat fungsi yang Anda ingin utas dieksekusi, misalnya:
void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}
Sekarang buat thread
objek yang pada akhirnya akan memanggil fungsi di atas seperti:
std::thread t1(task1, "Hello");
(Anda perlu #include <thread>
mengakses std::thread
kelas)
Argumen konstruktor adalah fungsi yang akan dijalankan thread, diikuti oleh parameter fungsi. Utas secara otomatis dimulai setelah konstruksi.
Jika nanti Anda ingin menunggu utas selesai menjalankan fungsi, hubungi:
t1.join();
(Bergabung berarti bahwa utas yang memanggil utas baru akan menunggu utas baru untuk menyelesaikan eksekusi, sebelum itu akan melanjutkan eksekusinya sendiri).
Kode
#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();
}
Informasi lebih lanjut tentang std :: utas di sini
- Pada GCC, kompilasi dengan
-std=c++0x -pthread
.
- Ini harus bekerja untuk sistem operasi apa pun, mengingat kompiler Anda mendukung fitur (C ++ 11) ini.