/****************************mutex**********************/
#include
#include
#include
#include
#include
#define _LOCK_ pthread_mutex_t mutex; void *t1(void *arg) { int i; pthread_mutex_lock(&mutex); for (i=0;i<3;i++){ printf("AAAAAAAAAA\n"); sleep(1); } pthread_mutex_unlock(&mutex); pthread_exit(NULL); } void *t2(void *arg) { int i; pthread_mutex_lock(&mutex); for (i=0;i<3;i++){ printf("BBBBBBBBBB\n"); sleep(1); } pthread_mutex_unlock(&mutex); pthread_exit(NULL); } int main () { pthread_t thread1,thread2; pthread_create(&thread1,NULL,t1,NULL); pthread_create(&thread2,NULL,t2,NULL); if (pthread_join(thread1, NULL) != 0) { perror("main"); } if (pthread_join(thread2, NULL) != 0) { perror("main"); } return 0; } /********************************sem************************/ #include
#include
#include
#include
#include
#include
sem_t sem; void *t1(void *arg) { int i; sem_wait(&sem); for (i=0;i<3;i++){ printf("AAAAAAAAAA\n"); sleep(1); } // sem_post(&sem); pthread_exit(NULL); } void *t2(void *arg) { int i; // sem_wait(&sem); for (i=0;i<3;i++){ printf("BBBBBBBBBB\n"); sleep(1); } sem_post(&sem); pthread_exit(NULL); } int main () { pthread_t thread1,thread2; pthread_create(&thread1,NULL,t1,NULL); pthread_create(&thread2,NULL,t2,NULL); if (pthread_join(thread1, NULL) != 0) { perror("main"); } if (pthread_join(thread2, NULL) != 0) { perror("main"); } return 0; }
【UNIX】通过线程的同步和互斥完成的AB循环
最新推荐文章于 2023-10-25 18:44:10 发布