#include <iostream>
#include <atomic>
#include <thread>
std:: atomic < int > last= 2 ;
std:: atomic < int > last_Value = 0 ;
std:: atomic < bool > running = true ;
void function_Thread_1( )
{
while ( running)
{
if ( last == 2 )
{
last_Value = last_Value + 1 ;
std:: cout << last_Value << std:: endl ;
last = 1 ;
}
}
}
void function_Thread_2( )
{
while ( running)
{
if ( last == 1 )
{
last_Value = last_Value + 1 ;
std:: cout << last_Value << std:: endl ;
last = 2 ;
}
}
}
int main( )
{
std:: thread a( function_Thread_1) ;
std:: thread b( function_Thread_2) ;
while ( last_Value ! = 6 ) { } //we want to print 1 to 6
running = false ; //inform threads we are about to stop
a.join ( ) ;
b.join ( ) ; //join
return 0 ;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDxhdG9taWM+CgkjaW5jbHVkZSA8dGhyZWFkPgoKCXN0ZDo6YXRvbWljPGludD4gICAgbGFzdD0yOwoJc3RkOjphdG9taWM8aW50PiAgICBsYXN0X1ZhbHVlID0gMDsKCXN0ZDo6YXRvbWljPGJvb2w+ICAgcnVubmluZyA9IHRydWU7CgoJdm9pZCBmdW5jdGlvbl9UaHJlYWRfMSgpCgl7CgkJICB3aGlsZShydW5uaW5nKQoJCSAgewoJCQkgIGlmKGxhc3QgPT0gMikKCQkJICB7CgkJCQkgIGxhc3RfVmFsdWUgPSBsYXN0X1ZhbHVlICsgMTsKCQkJCSAgc3RkOjpjb3V0IDw8IGxhc3RfVmFsdWUgPDwgc3RkOjplbmRsOwoJCQkJICBsYXN0ID0gMTsKCQkJICB9CgkJICB9Cgl9CgoJdm9pZCBmdW5jdGlvbl9UaHJlYWRfMigpCgl7CgkJICB3aGlsZShydW5uaW5nKQoJCSAgewoJCQkgIGlmKGxhc3QgPT0gMSkKCQkJICB7CgkJCQkgIGxhc3RfVmFsdWUgPSBsYXN0X1ZhbHVlICsgMTsKCQkJCSAgc3RkOjpjb3V0IDw8IGxhc3RfVmFsdWUgPDwgc3RkOjplbmRsOwoJCQkJICBsYXN0ID0gMjsKCQkJICB9CgkJICB9Cgl9CgoJaW50IG1haW4oKSAKCXsKCQlzdGQ6OnRocmVhZCBhKGZ1bmN0aW9uX1RocmVhZF8xKTsKCQlzdGQ6OnRocmVhZCBiKGZ1bmN0aW9uX1RocmVhZF8yKTsKCgkJd2hpbGUobGFzdF9WYWx1ZSAhPSA2KXt9Ly93ZSB3YW50IHRvIHByaW50IDEgdG8gNgoKCQlydW5uaW5nID0gZmFsc2U7Ly9pbmZvcm0gdGhyZWFkcyB3ZSBhcmUgYWJvdXQgdG8gc3RvcAoKCQlhLmpvaW4oKTsKCQliLmpvaW4oKTsvL2pvaW4KCQlyZXR1cm4gMDsKCX0=
compilation info
prog.cpp:5:27: error: use of deleted function ‘std::atomic<int>::atomic(const std::atomic<int>&)’
In file included from prog.cpp:2:0:
/usr/include/c++/4.7/atomic:594:7: error: declared here
prog.cpp:6:35: error: use of deleted function ‘std::atomic<int>::atomic(const std::atomic<int>&)’
In file included from prog.cpp:2:0:
/usr/include/c++/4.7/atomic:594:7: error: declared here
prog.cpp:7:32: error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’
In file included from prog.cpp:2:0:
/usr/include/c++/4.7/atomic:480:7: error: declared here
stdout