linux 互斥锁之trylock的简单测试

/* ************************************************************************
* Filename: n_trylock.c
* Description:
* Version: 1.0
* Created: 2011骞?4鏈?2鏃?20鏃?9鍒?2绉?
* Revision: none
* Compiler: gcc
* Author: wenhao (wh), hnrain1004@gmail.com
* Company: sunplusapp
* ***********************************************************************
*/


#include
<stdio.h>
#include
<pthread.h>
#include
<errno.h>
pthread_mutex_t mutex;

void *thread_a(void *arg)
{
printf(
"thread a enter\n");
pthread_mutex_lock(
&mutex);
printf(
"mutex a lock\n");
sleep(
6);
pthread_mutex_unlock(
&mutex);
printf(
"mutex a unlock\n");
}

void *thread_b(void *arg)
{
printf(
"thread b enter\n");
#if 1
pthread_mutex_trylock(
&mutex);
#else
while(pthread_mutex_trylock(&mutex)==EBUSY)
{
printf(
"pthread b trylock\n");
sleep(
1);
}
#endif
printf(
"mutex b lock\n");
pthread_mutex_unlock(
&mutex);
printf(
"mutex b unlock\n");
}

int main(int argc,char **argv)
{
pthread_t tid_a,tid_b;
int err;

if(pthread_mutex_init(&mutex,NULL) != 0)
{
perror(
"pthread_mutex_init");

}

err
= pthread_create(&tid_a,NULL,thread_a,NULL);
if(err != 0)
{
perror(
"pthread_create thread_a");
}

sleep(
1);
err
= pthread_create(&tid_b,NULL,thread_b,NULL);
if(err < 0)
{
perror(
"pthread_create thread_b");
}
sleep(
10);

printf(
"the main close\n");

return 0;
}
原文地址:https://www.cnblogs.com/hnrainll/p/2033855.html