Example #1
0
File: main.cpp Project: 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;



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