#include <thread> #include <vector> #include <iostream> #include <atomic> #include <vector> std::atomic<bool> vec[10]; std::atomic<bool> lock(false); // holds true when locked // holds false when unlocked void f(int n) { for (int cnt = 0; cnt < 100; ++cnt) { while(std::atomic_exchange_explicit(&lock, true, std::memory_order_acquire)) ; // spin until acquired std::cout << "Output from thread " << n << '\n'; std::atomic_store_explicit(&lock, false, std::memory_order_release); } } int main() { vec[0] = false; vec[1] = false; std::vector<std::thread> v; for (int n = 0; n < 10; ++n) { v.emplace_back(f, n); } for (auto& t : v) { t.join(); } }
Standard input is empty
Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 6 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 7 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 8 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 9 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 5 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 4 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 3 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 2 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 1 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0 Output from thread 0