*/
Data* read() {
Data *res = data.load(memory_order_acquire);
- load_32(&res->data1);
+ //load_32(&res->data1);
/**
@Begin
@Commit_point_define_check: true
@End
*/
Data* write(int d1, int d2, int d3) {
- Data *prev = data.load(memory_order_acquire);
bool succ = false;
Data *tmp = (Data*) malloc(sizeof(Data));
+ Data *prev = data.load(memory_order_acquire);
do {
- store_32(&tmp->data1, prev->data1 + d1);
- //tmp->data1 = prev->data1 + d1;
+ //store_32(&tmp->data1, prev->data1 + d1);
+ tmp->data1 = prev->data1 + d1;
tmp->data2 = prev->data2 + d2;
tmp->data3 = prev->data3 + d3;
succ = data.compare_exchange_strong(prev, tmp,
- memory_order_acq_rel, memory_order_acquire);
+ memory_order_release, memory_order_acquire);
/**
@Begin
@Commit_point_define_check: succ
thrd_create(&t1, threadA, NULL);
thrd_create(&t2, threadB, NULL);
- thrd_create(&t3, threadC, NULL);
- thrd_create(&t4, threadD, NULL);
+ //thrd_create(&t3, threadC, NULL);
+ //thrd_create(&t4, threadD, NULL);
thrd_join(t1);
thrd_join(t2);
- thrd_join(t3);
- thrd_join(t4);
+ //thrd_join(t3);
+ //thrd_join(t4);
return 0;
}