Linux で提供されているセマフォ API を調べました。セマフォの簡単な使い方は次のとおりです。
sem_wait()
//do something
sem_post()
pthread ライブラリで利用可能な同期プリミティブを使用して、同様の動作を実現できますか?
POSIX APIを通過した後、次のコードを思いつきました:
int a = COUNT_LIMIT; //global variable
pthread_mutex_t m1;
pthread_cond_t c1;
pthread_mutex_lock(&m1);
while(a==0){
pthread_cond_wait(&c1, &m1);
}
a--;
//do whatever i want to do, as resource is available
pthread_cond_signal(&c1,&m1);
pthread_mutex_unlock(&m1);
このコードでうまくいくと思いますが、この動作を実現するための最善の方法は何ですか?