试探性锁
#include stdio.h>
#include pthread.h>
#include string.h>
pthread_mutex_t mymutex1;
pthread_mutex_t mymutex2;
pthread_t tid;
*
pthread_mutex_trylock(&mymutex1)会尝试加锁,如果该互斥锁已经锁定,则返回一个不为0
得错误值,如果该互斥锁没有锁定,则返回0,表示尝试加锁成功
的
*
void *pthread_func1(void *arg)
{
pthread_mutex_lock(&mymutex1);
if(0 != pthread_mutex_trylock(&mymutex1))
{
printf("pthread_func1 has already lock!\n");
}
pthread_mutex_unlock(&mymutex1);
printf("hello world!\n");
}
void *pthread_func2(void *arg)
{
if(0 != pthread_mutex_trylock(&mymutex2))
{
printf("pthread_func2 has already lock!\n");
}
pthread_mutex_unlock(&mymutex2);
printf("hello world!\n");
}
int main()
{
pthread_mutex_init(&mymutex1,NULL);
pthread_mutex_init(&mymutex2,NULL);
if(0 != pthread_create(&tid,NULL,pthread_func1,NULL))
{
printf("create pthread failed!\n");
}
if(0 != pthread_create(&tid,NULL,pthread_func2,NULL))
{
printf("create pthread failed!\n");
}
while(1);
return 0;
}