互斥锁
为什么这个代码执行的使只输入了一部分,后面的执行就很卡
为啥啊
代码如下:
#include<pthread.h>#include<stdio.h>#include<errno.h>int i=0; pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;void thread1(){ printf("come in thread1\n"); int ret; while(1) { ret=pthread_mutex_trylock(&mutex); if(ret!=EBUSY) { pthread_mutex_lock(&mutex); printf("this is thread1:%d\n",i); i++; pthread_mutex_unlock(&mutex); } sleep(1); }}void thread2(){ printf("come in thread2\n"); int ret; while(1) { ret=pthread_mutex_trylock(&mutex); if(ret!=EBUSY) { pthread_mutex_lock(&mutex); printf("this is thread2:%d\n",i); i++; pthread_mutex_unlock(&mutex); } sleep(1); }}int main(){ pthread_t t1,t2; printf("main start\n"); pthread_mutex_init(&mutex,NULL); printf("this is in main and after mutex init\n"); pthread_create(&t1,NULL,(void *)thread1,NULL); printf("this is in main and at middle of create thread1 and thread2\n"); pthread_create(&t2,NULL,(void *)thread2,NULL); printf("this is in main and after create thred1 and thread2\n"); pthread_join(t1,NULL); printf("this is in main and after thread1 join\n"); pthread_join(t2,NULL); printf("this is after thread2 join\n"); pthread_mutex_destroy(&mutex); return 0;}