fix read access on loop condition
This commit is contained in:
parent
b8f2b652cb
commit
dd1bac08c8
|
@ -30,12 +30,14 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
|
||||
void* collatz (void* arg) {
|
||||
while (curr <= one_mil) {
|
||||
while (true) {
|
||||
pthread_mutex_lock(&currMutex);
|
||||
bool keep_going = curr <= one_mil;
|
||||
unsigned long long tmp = curr;
|
||||
unsigned int start = curr;
|
||||
curr++;
|
||||
pthread_mutex_unlock(&currMutex);
|
||||
if (!keep_going) break;
|
||||
|
||||
int cnt = 0;
|
||||
while (tmp != 1) {
|
||||
|
|
|
@ -28,7 +28,7 @@ class Collatz {
|
|||
}
|
||||
|
||||
class CollatzCalc implements Runnable {
|
||||
Curr curr; Prev prev; Max max; long tmp; int start, cnt;
|
||||
Curr curr; Prev prev; Max max; long tmp; int start, cnt; boolean keep_going;
|
||||
|
||||
public CollatzCalc (Curr curr, Prev prev, Max max) {
|
||||
this.curr = curr;
|
||||
|
@ -37,12 +37,14 @@ class CollatzCalc implements Runnable {
|
|||
}
|
||||
|
||||
public synchronized void run () {
|
||||
while (curr.curr <= Collatz.one_mil) {
|
||||
while (true) {
|
||||
synchronized (curr) {
|
||||
keep_going = curr.curr <= Collatz.one_mil;
|
||||
tmp = curr.curr;
|
||||
start = curr.curr;
|
||||
curr.curr++;
|
||||
}
|
||||
if (!keep_going) break;
|
||||
|
||||
cnt = 0;
|
||||
while (tmp != 1) {
|
||||
|
|
Loading…
Reference in New Issue