BRUTE AE: 05vlakna: Test: Limited memory many repetitions
Dobrý den, rád bych Vás požádal o radu ohledně patnáctého testu úlohy na synchronisaci vláken. Test je zaměřen na omezenou paměť a mnoho opakování slova, a hází segfault na řádku, kde se alokuje buffer, do kterého se zapíše celý vypisovaný řádek před posláním na stdout. Z toho usuzuji, že daný řádek výpisu je příliš dlouhý, než aby ho šlo celý uložit do paměti.
Jenže když každý řádek rozdělím do více volání printf, tak se volání z jednotlivých threadů pomíchají a výstup je chybný. Když přidám semafor, aby vždy vypisovalo jen jedno vlákno, tak mi Brute píše, že mám použít mutex. Když použiji mutex, píše mi, že mutex se na funkce jako printf používat nemá, protože dochází ke zbytečnému blokování.
Jediné, co mě ještě napadá, je aby každé vlákno vypisovalo do jiného souboru a ty se na konci přepsaly do stdout, ale tam by asi došlo ke změně pořadí, a navíc je to methoda dosti barbarská.
Takže si myslím, že mi uniká něco hrozně jednoduchého, ale nemůžu na nic přijít.
Děkuji Damir Gruncl.
Keep this URL here: https://cw.felk.cvut.cz/brute/data/ae/release/2020z_b4b35osy/05vlakna/cviceni/ae/results/results.php?&idg=gruncdam&idu=5943&upload=951622&result=590640#test-15