我浏览了 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);
我相信这段代码可以解决问题,但是实现这种行为的最佳实践是什么?