Producer Consumer TAS Sample code
This commit is contained in:
34
Practice_07/Producer_Consumer_TAS.c
Normal file
34
Practice_07/Producer_Consumer_TAS.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include <stdio.h>
|
||||
#include <stdatomic.h>
|
||||
#include <pthread.h>
|
||||
|
||||
atomic_int counter = 5; //원자적 변수
|
||||
|
||||
void* producer(void* arg){
|
||||
for(int i = 0; i < 1000000; i++){
|
||||
atomic_fetch_add(&counter, 1);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *consumer(void* arg){
|
||||
for(int i = 0; i < 1000000; i++){
|
||||
atomic_fetch_sub(&counter, 1);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(){
|
||||
pthread_t t1, t2;
|
||||
|
||||
pthread_create(&t1, NULL, producer, NULL);
|
||||
pthread_create(&t2, NULL, consumer, NULL);
|
||||
|
||||
pthread_join(t1, NULL);
|
||||
pthread_join(t2, NULL);
|
||||
|
||||
printf("최종 Counter 값 : %d\n", counter);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user