Thread

STL menyediakan thread yang memungkinkan fungsi berjalan secara relatif bersamaan. Contoh penggunaan thread bisa kalian lihat di bawah ini.
#include <iostream>
#include <thread>
 
void f1(int n) {
  for(int i=0;i<n;i++)std::cout<< i << std::endl;
}

void f2(){
    for(char c='a';c<'z';c++)std::cout<< c << std::endl;
}

int main() {
  std::thread fungsi1 (f1, 10);
  std::thread fungsi2 (f2);

  std::cout << "Mulai ...\n";
  
  fungsi1.join();
  fungsi2.join();
  //fungsi1.detach();

  std::cout << "Selesai\n";

  return 0;
}
Output :
Mulai ...
0
1
2
3
4
5
6
7
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
8
9
Selesai

Thread menjalankan function secara bersamaan kecuali kalian menggunakan join. Method join digunakan untuk menunggu salah satu thread diselesaikan sebelum beralih ke thread lain. Beberapa thread yang sudah terlanjur berjalan bersamaan sebelum menggunakan join hasilnya bisa berbeda setiap kali program dijalankan. Untuk melepas thread, kalian bisa menggunakan detach.

Walaupun disebut bersamaan, kenyataannya fungsi tersebut dijalankan bergantian. Sebaiknya kalian tidak menggunakan dua fungsi untuk mengakses satu variabel global yang sama menggunakan thread jika kalian tidak ingin variabel tersebut membuat "kekacauan".