- 395 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 20:52:01 ]
- >>394
pthreadにrwlockってないんだっけ 自前でrwlockもどきを実装するならこんな感じかな・・ pthread_mutex_t *mutex; pthread_cond_t *cond; int a_runners; int b_runners; void Func(){ if (条件) { pthread_mutex_lock(mutex); while (a_runners > 0 || b_runners > 0) pthread_cond_wait(cond, mutex); a_runners += 1; pthread_mutex_unlock(mutex); 処理A pthread_mutex_lock(mutex); a_runners -= 1; pthread_cond_broadcast(cond); pthread_mutex_unlock(mutex); } pthread_mutex_lock(mutex); while (a_runners > 0) pthread_cond_wait(cond, mutex); b_runners += 1; pthread_mutex_unlock(mutex); 処理B pthread_mutex_lock(mutex); b_runners -= 1; pthread_cond_broadcast(cond); pthread_mutex_unlock(mutex); }
|

|