0

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); 
}   

どんな助けでも大歓迎です。

4

0 に答える 0