/****************************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循環
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.