Exemplo n.º 1
0
Arquivo: main.cpp Projeto: CCJY/coliru
void m ()
{

  int a(0), b(0);

  auto f = [&]() 
    {
      while (1)
      { 
          __transaction_atomic
          {
            a++;
            b++;
            
            if (a % 5 == 2) { a+= 11; b += 11; }
          };
      }
    };

  
  std::thread(f).detach();

  std::thread([&]{ while(1) { if ( __transaction_atomic(a-b) != 0 ) { printf("error\n"); exit(0); } } }).detach();
  std::thread([] { sleep(1); printf("no errors\n"); exit(0); }).detach();
  sleep(2);
  printf("exit\n");
  return;



}
Exemplo n.º 2
0
void foobar(void)
{
  x = y + __transaction_atomic (york);
}
Exemplo n.º 3
0
int f2()
{
  return __transaction_atomic (global + 3)
         + __transaction_atomic (global + 4);
}
Exemplo n.º 4
0
template<typename T> int foo()
{
  return __transaction_atomic (global + 2)
         + __transaction_atomic (global + 3);
}