From: jihoonl Date: Thu, 24 Sep 2009 18:33:53 +0000 (+0000) Subject: run execute method outside of transaction X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=669e54603bc09540cf8d8e3a14c2566ac175bd77;p=IRC.git run execute method outside of transaction --- diff --git a/Robust/src/ClassLibrary/JavaDSM/Task.java b/Robust/src/ClassLibrary/JavaDSM/Task.java index c4119819..355cc4cc 100644 --- a/Robust/src/ClassLibrary/JavaDSM/Task.java +++ b/Robust/src/ClassLibrary/JavaDSM/Task.java @@ -1,13 +1,25 @@ public class Task { Queue todoList; Queue doneList; + Object myWork; Task() {} public void init(); - public void execute(Object work); + public native void execution(); + public void execute() { + System.out.println("Sad"); + } + public void done(Object work); + public void setWork(Object work) + { + atomic { + this.myWork = work; + } + } + public Object grabTask() { Object o; atomic { diff --git a/Robust/src/ClassLibrary/JavaDSM/Work.java b/Robust/src/ClassLibrary/JavaDSM/Work.java index 56e18d1b..9b9c164a 100644 --- a/Robust/src/ClassLibrary/JavaDSM/Work.java +++ b/Robust/src/ClassLibrary/JavaDSM/Work.java @@ -17,6 +17,7 @@ public class Work extends Thread { workMID = MY_MID; } + Task localTask; int chk; int result; int i,j; @@ -28,9 +29,7 @@ public class Work extends Thread { isEmpty = tasks.isTodoListEmpty(); // flag > !keep assigning if (!isEmpty) { - atomic { - currentWorkList[workMID] = tasks.grabTask(); /* grab the work from work pool */ - } + currentWorkList[workMID] = tasks.grabTask(); /* grab the work from work pool */ chk = 1; } else { @@ -40,19 +39,19 @@ public class Work extends Thread { if(chk == 1) { // still have work atomic { - /* compute */ - tasks.execute(currentWorkList[workMID]); - /* push into done list */ - tasks.done(currentWorkList[workMID]); - currentWorkList[workMID] = null; + tasks.setWork(currentWorkList[workMID]); + localTask = tasks; } + /* compute */ + localTask.execution(); + atomic { + /* push into done list */ + tasks.done(currentWorkList[workMID]); + currentWorkList[workMID] = null; cc = ((Drinker)tasks).ownTotal; } - -// System.out.println("CC = " + cc); -// sleep(1000000); } else if(chk == -1) { // finished all work break; @@ -78,7 +77,7 @@ public class Work extends Thread { int num_threads; int status; boolean chk = false; - Segment s; + Object s; atomic { myID = mywork.MY_MID; @@ -93,7 +92,7 @@ public class Work extends Thread { atomic { - s = (Segment)mywork.currentWorkList[i]; + s = mywork.currentWorkList[i]; if(status == -1 && null != s) { mywork.currentWorkList[myID] = mywork.currentWorkList[i];