Commit 9491eb72 authored by peastman's avatar peastman
Browse files

Fixed a race condition

parent 18f1cd3e
...@@ -172,11 +172,16 @@ CpuNeighborList::CpuNeighborList() { ...@@ -172,11 +172,16 @@ CpuNeighborList::CpuNeighborList() {
pthread_cond_init(&endCondition, NULL); pthread_cond_init(&endCondition, NULL);
pthread_mutex_init(&lock, NULL); pthread_mutex_init(&lock, NULL);
thread.resize(numThreads); thread.resize(numThreads);
pthread_mutex_lock(&lock);
waitCount = 0;
for (int i = 0; i < numThreads; i++) { for (int i = 0; i < numThreads; i++) {
ThreadData* data = new ThreadData(i, *this); ThreadData* data = new ThreadData(i, *this);
threadData.push_back(data); threadData.push_back(data);
pthread_create(&thread[i], NULL, threadBody, data); pthread_create(&thread[i], NULL, threadBody, data);
} }
while (waitCount < numThreads)
pthread_cond_wait(&endCondition, &lock);
pthread_mutex_unlock(&lock);
} }
CpuNeighborList::~CpuNeighborList() { CpuNeighborList::~CpuNeighborList() {
......
...@@ -71,11 +71,16 @@ CpuNonbondedForce::CpuNonbondedForce() : cutoff(false), useSwitch(false), period ...@@ -71,11 +71,16 @@ CpuNonbondedForce::CpuNonbondedForce() : cutoff(false), useSwitch(false), period
pthread_cond_init(&endCondition, NULL); pthread_cond_init(&endCondition, NULL);
pthread_mutex_init(&lock, NULL); pthread_mutex_init(&lock, NULL);
thread.resize(numThreads); thread.resize(numThreads);
pthread_mutex_lock(&lock);
waitCount = 0;
for (int i = 0; i < numThreads; i++) { for (int i = 0; i < numThreads; i++) {
ThreadData* data = new ThreadData(i, *this); ThreadData* data = new ThreadData(i, *this);
threadData.push_back(data); threadData.push_back(data);
pthread_create(&thread[i], NULL, threadBody, data); pthread_create(&thread[i], NULL, threadBody, data);
} }
while (waitCount < numThreads)
pthread_cond_wait(&endCondition, &lock);
pthread_mutex_unlock(&lock);
} }
/**--------------------------------------------------------------------------------------- /**---------------------------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment