Linux プログラミングでミューテックスを使用する方法を学んでいます。私はtrylock関数に出くわしました.mutexが利用可能かどうかを最初にチェックし、それ以外の場合はロックし、戻ります。
今私の質問は:
- trylock が呼び出されたときに、クリティカル セクションを実行せずに関数の最後に到達した後に戻りますか?
errno
以下のコードで印刷されないのはなぜですか?
コードは次のとおりです。
int main()
{
pthread_t tid[5];
int i;
if(pthread_mutex_init(&mutex,NULL))
printf("Failed to lock the mutex\n");
for(i=0;i<5;i++)
{
if(pthread_create(&tid[i],NULL,func,&i))
printf("Failed to create a thread\n");
if(errno==EBUSY)
printf("thread busy\n");
}
for(i=0;i<5;i++)
{
if(pthread_join(tid[i],NULL))
printf("Failed to wait for thread %d\n",i);
}
printf("All threads terminated\n");
return 0;
}
void *func(void * arg)
{
int i=*(int *)arg;
if(pthread_mutex_trylock(&mutex)==0)
{
sleep(5);
printf(" i is %d\n",i);
pthread_mutex_unlock(&mutex);
}
else
if(errno== EBUSY)
printf("thread busy\n");
}
フォーマットレスコードで申し訳ありません..
よろしく