Каковы преимущества использования условных переменных pthread вместо pthread_join для эмуляции Windows WaitForMultipleObject?
Вот код C ++ для эмуляции Windows WaitForMultipleObject с использованием
pthread_join:
int i;
for(i=0;i<threads;i++)
pthread_join(threadids[i], NULL);
Вот код C ++ для эмуляции Windows WaitForMultipleObject с использованием
pthread_cond_wait:
mCritSect.Lock();
pthread_mutex_lock(&mMutex);
while (true) {
// check if ThreadPool array has unused element
for (unsigned ix(0); ix < NumberThreads; ix++) {
if (ThreadPool[ix] == 0) {
pthread_create(pThread,
(const pthread_attr_t*)0,
(void(*)(void*))ThreadFunction
ChildList);
pthread_mutex_unlock(&mMutex);
mCritSect.UnLock();
return ThreadPool[ix];
}
}
// wait on mConditionVariable for ThreadPool array element to become available
pthread_cond_wait(&mConditionVariable, &mMutex);
}
Любая помощь с благодарностью.
Задача ещё не решена.
Других решений пока нет …