CyberStars

Parallel Histogram

Două fire de execuție numără aparițiile literelor lowercase într-un șir, partajând un array de 26 de contoare (histograma). Fiecare incrementare din histogramă e protejată de un mutex pentru că cele două fire pot atinge același contor în același moment.

Firul t1 procesează prima jumătate a șirului, t2 procesează a doua. Firul principal așteaptă amândouă terminările și afișează literele care au apărut cel puțin o dată, în ordine alfabetică.

Date de intrare

  • Linia 1: un șir de cel mult 10^5 de caractere, format doar din litere lowercase (fără spații).

Rezultat

  • Câte o linie pentru fiecare literă care apare în șir, în ordine alfabetică, sub forma x: k (litera și frecvența ei).

Exemple

Intrare:
programare
Ieșire:
a: 2
e: 1
g: 1
m: 1
o: 1
p: 1
r: 3
Intrare:
aabbcc
Ieșire:
a: 2
b: 2
c: 2

Folosește pthread_create, pthread_join și un pthread_mutex_t partajat.