Last active
April 13, 2016 09:57
-
-
Save ahmedengu/d02f1ce1b26c4f911d20fcb9c64133f6 to your computer and use it in GitHub Desktop.
generate random char and convert it to uppercase
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <pthread.h> | |
#include <semaphore.h> | |
#include <math.h> | |
#include <ctype.h> | |
int number = 10, buff = 0; | |
char queue[10]; | |
sem_t full_sem, empty_sem; | |
void insert(char e) { | |
if (buff + 1 < number) { | |
printf(", inserted char: %c", e); | |
queue[buff++] = e; | |
} else | |
printf("\nfull"); | |
} | |
void Delete(char *e) { | |
if (buff > 0) { | |
*e = toupper(queue[--buff]); | |
} else | |
printf("\nempty"); | |
} | |
void *produce() { | |
for (int i = 0; i < number; ++i) { | |
sem_wait(&full_sem); | |
printf("\ninsert random char #%d", i); | |
insert((char) 'a' + (random() % 26)); | |
sem_post(&empty_sem); | |
} | |
} | |
void *consume(void *a) { | |
for (int i = 0; i < number; ++i) { | |
char v; | |
sem_wait(&empty_sem); | |
Delete(&v); | |
printf("\nuppercase char: %c", v); | |
sem_post(&full_sem); | |
} | |
} | |
int main() { | |
pthread_t t[2]; | |
sem_init(&full_sem, 0, number - 1); | |
sem_init(&empty_sem, 0, 0); | |
pthread_create(&t[0], NULL, &produce, NULL); | |
pthread_create(&t[1], NULL, &consume, NULL); | |
pthread_join(t[0], NULL); | |
pthread_join(t[1], NULL); | |
sem_destroy(&full_sem); | |
sem_destroy(&empty_sem); | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
insert random char #0, inserted char: n | |
insert random char #1, inserted char: w | |
insert random char #2, inserted char: l | |
insert random char #3, inserted char: r | |
insert random char #4, inserted char: b | |
insert random char #5, inserted char: b | |
insert random char #6, inserted char: m | |
insert random char #7, inserted char: q | |
insert random char #8, inserted char: b | |
uppercase char: B | |
uppercase char: Q | |
uppercase char: M | |
uppercase char: B | |
uppercase char: B | |
uppercase char: R | |
uppercase char: L | |
uppercase char: W | |
uppercase char: N | |
insert random char #9, inserted char: h | |
uppercase char: H |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment