Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ako si na tom s angličtinou ? Hladaj buffer alebo cache...
Offline
↑ hradecek:
angličtina? bída, ale asi mi stejně nic jiného nezbyde...díky za tip
Offline
Pokud řešíš např. vícevláknově kruhový buffer/cache:
PrvekCache prvky[pocetPrvku];
Máš 2 posixové semafory:
sem_t prazdnychPrvku; sem_t plnychPrvku;
A nějaké proměnné s aktuálním čtecím a zapisujícím prvkem
size_t indexCteni; size_t indexZapisovani;
Nejprve inicializuješ:
sem_init(&prazdnychPrvku, 0, pocetPrvku); sem_init(&plnychPrvku, 0, 0); indexCteni = indexZapisovani = 0;
A potom v zapisujícím vlákně v cyklu
sem_wait(&prazdnychPrvku); // tady zapíšeš do cache prvky[indexZapisovani] = hodnota; indexZapisovani = (indexZapisovani + 1) % pocetPrvku; sem_post(&plnychPrvku);
A ve čtecím vlákně v cyklu
sem_wait(&plnychPrvku); PrvekCache *p = prvky + indexCteni; indexCteni = (indexCteni + 1) % pocetPrvku; // ... tady něco uděláš s tím prvkem sem_post(&prazdnychPrvku);
A ještě by to chtělo přidat nějaké ukončující podmínky
Offline