Skip to content

Instantly share code, notes, and snippets.

@ahmedengu
Created April 13, 2016 09:57
Show Gist options
  • Save ahmedengu/e0d56baeaea0bef23567afda36baa3e5 to your computer and use it in GitHub Desktop.
Save ahmedengu/e0d56baeaea0bef23567afda36baa3e5 to your computer and use it in GitHub Desktop.
generate random text and convert it to uppercase
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <math.h>
#include <ctype.h>
int number = 10, buff = 0;
char queue[10][10];
sem_t full_sem, empty_sem;
void insert(char e[]) {
if (buff + 1 < number) {
buff++;
printf(", inserted text: %s", e);
for (int i = 0; i < number; ++i) {
queue[buff][i] = e[i];
}
} else{
printf("\nfull");}
}
void *produce() {
for (int i = 0; i < number; ++i) {
sem_wait(&full_sem);
printf("\ninsert random text #%d", i);
char tmpChar[100];
for (int j = 0; j < number; ++j) {
tmpChar[j] = (char) 'a' + (random() % 26);
}
insert(tmpChar);
sem_post(&empty_sem);
}
}
void *consume(void *a) {
for (int i = 0; i < number; ++i) {
char v[10];
sem_wait(&empty_sem);
if (buff > 0) {
for (int j = 0; j < number; ++j) {
v[j] = toupper(queue[buff][j]);
}
buff--;
} else {
printf("\nempty");
}
printf("\nuppercase char: %s", 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;
}
insert random text #0, inserted text: nwlrbbmqbh
insert random text #1, inserted text: cdarzowkky
insert random text #2, inserted text: hiddqscdxr
insert random text #3, inserted text: jmowfrxsjy
insert random text #4, inserted text: bldbefsarc
insert random text #5, inserted text: bynecdyggx
insert random text #6, inserted text: xpklorelln
insert random text #7, inserted text: mpapqfwkho
insert random text #8, inserted text: pkmcoqhnwn
uppercase char: PKMCOQHNWN
uppercase char: MPAPQFWKHO
uppercase char: XPKLORELLN
uppercase char: BYNECDYGGX
uppercase char: BLDBEFSARC
uppercase char: JMOWFRXSJY
uppercase char: HIDDQSCDXR
uppercase char: CDARZOWKKY
uppercase char: NWLRBBMQBH
insert random text #9, inserted text: kuewhsqmgb
uppercase char: KUEWHSQMGB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment