pthread_join の代わりに pthread 条件変数を使用して Windows WaitForMultipleObject をエミュレートする利点は何ですか?
pthread_join を使用して Windows WaitForMultipleObject をエミュレートする C++ コードを次に示します。
int i;
for(i=0;i<threads;i++)
pthread_join(threadids[i], NULL);
pthread_cond_wait を使用して Windows WaitForMultipleObject をエミュレートする C++ コードを次に示します。
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);
}
どんな助けでも大歓迎です。