#include <pthread.h>
#include <unistd.h>
pthread_mutex_t pthreadMutex;
void *testThread(){
printf("线程1开始加锁\n");
pthread_mutex_lock(&pthreadMutex);
printf("线程1加锁成功\n");
sleep(10);
printf("Hello, World!New Thread11\n");
pthread_mutex_unlock(&pthreadMutex);
printf("线程1解锁成功\n");
}
void *testThread2(){
//trylock会立即返回结果,而lock会排队
// while (pthread_mutex_trylock(&pthreadMutex)!=0){
// sleep(1);
// printf("线程2尝试加锁未成功,继续重试\n");
// }
printf("线程2开始加锁\n");
pthread_mutex_lock(&pthreadMutex);
printf("线程2加锁成功\n");
sleep(10);
printf("Hello, World!New Thread22\n");
pthread_mutex_unlock(&pthreadMutex);
printf("线程2解锁成功\n");
}
int main() {
//初始化互斥锁
pthread_mutex_init(&pthreadMutex,NULL);
printf("Hello, World!\n");
pthread_t pthread_t,pthread_t2;
pthread_create(&pthread_t, NULL, testThread, NULL);
pthread_create(&pthread_t2, NULL, testThread2, NULL);
sleep(30);
//销毁互斥锁
pthread_mutex_destroy(&pthreadMutex);
return 0;
}
执行结果:
Hello, World!
线程1开始加锁
线程1加锁成功
线程2开始加锁
Hello, World!New Thread11
线程1解锁成功
线程2加锁成功
Hello, World!New Thread22
线程2解锁成功
32111