changeset 845:feb874340610

use local variable
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 21 Jan 2021 17:01:16 +0900
parents 49408bce514c
children 348d6f20134e
files src/parallel_execution/examples/DPP2/PhilsImpl.cbc
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/examples/DPP2/PhilsImpl.cbc	Thu Jan 21 16:39:39 2021 +0900
+++ b/src/parallel_execution/examples/DPP2/PhilsImpl.cbc	Thu Jan 21 17:01:16 2021 +0900
@@ -22,7 +22,7 @@
     phils->phils = (union Data*)phils_impl;
     phils_impl->Leftfork = left;
     phils_impl->Rightfork = right;
-    phils_impl->self = 0;
+    phils_impl->self = id;
     phils->putdown_lfork = C_putdown_lfork_PhilsImpl;
     phils->putdown_rfork = C_putdown_rfork_PhilsImpl;
     phils->eating = C_eating_PhilsImpl;
@@ -33,30 +33,34 @@
 }
 
 __code putdown_lfork_PhilsImpl(struct PhilsImpl* phils, __code next(...)) {
-    goto phils->Leftfork->set(-1, putdown_rfork_PhilsImpl);
+    struct AtomicT_int* left_fork = phils->Leftfork;
+    goto left_fork->set(-1, putdown_rfork_PhilsImpl);
 
 }
 
 __code putdown_rfork_PhilsImpl(struct PhilsImpl* phils, __code next(...)) {
-    goto phils->Rightfork->set(-1, putdown_lfork_PhilsImpl);
+    struct AtomicT_int* right_fork = phils->Rightfork;
+    goto right_fork->set(-1, putdown_lfork_PhilsImpl);
 }
 
 __code thinking_PhilsImpl(struct PhilsImpl* phils, struct Fork* fork, __code next(...)) {
-    printf("%d: thinking\n", phils->phils->id);
-    goto pickup_lfork(phils_impl->self);
+    printf("%d: thinking\n", phils->self);
+    goto pickup_lfork(phils->self);
 }
 
 __code pickup_rfork_PhilsImpl(struct PhilsImpl* phils, __code next(...)) {
-    goto phils->Rightfork->checkAndSet(id, -1, pickup_lfork, pickup_rfork);
+    struct AtomicT_int* right_fork = phils->Rightfork;
+    goto right_fork->checkAndSet(&phils->id, -1, pickup_lfork, pickup_rfork);
 }
 
 __code pickup_lfork_PhilsImpl(struct PhilsImpl* phils, __code next(...)) {
-    goto phils->Leftfork->checkAndSet(id, -1, pickup_rfork, eating);
+    struct AtomicT_int* left_fork = phils->Leftfork;
+    goto left_fork->checkAndSet(id, -1, pickup_rfork, eating);
 
 }
 
 __code eating_PhilsImpl(struct PhilsImpl* phils, __code next(...)) {
-    printf("%d: eating\n", phils_impl->self->id);
+    printf("%d: eating\n", phils->self);
     goto putdown_rfork();
 }