Chci načíst seznam souborů v adresáři do fronty (queue) pomocí C a uvažují jak to co nejefektivněji zrealizovat, vzhledem k tomu že dělám multivláknovou aplikaci. Nejdříve jsem myslel udělat jedno pole představující frontu s názvy souborů, což by byl typ char * [256]. Vlákno by si našlo v poli soubor, který chce zpracovat, pak ho odtama vyňalo ('�') a zapsalo do seznamu prázdných indexů (uint32_t * i) že daný index je volný. Mezi tím jiná procedůra která průběžně načítá (nové) soubory z adresáře by ten index/soubor mohla zase doplnit (zkopírovat název soubor a vyjnout index se seznamu prázdných indexů).
Ale napadla mě ještě druhá možnost, a to že bych vytvořil, pro každé vlákno jednu frontu, takže například 8 jádrový procesor by mohl mít 8 nebo 16 front (a taky tolik seznamů prázdných indexů). Proces načítání souborů by jednoduše rozděloval soubory mezi těchto 16 front. 16 souborů by se rozdělilo na 16 front po jednom souboru a seznamy indexů budou mít kratší délku tím pádem se to rychleji projede. Čím méně souborů tím rychleji to bude ne? Vlákno které potřebuje soubor ke zpracování a nemělo by nic ve svém vlastním vlákně, by se podívalo do jiného vlákna, odkud by mohlo vzít soubor a informovat seznam volných indexů o tom, že daný index je opět prázdný. Představa je taková, že by takto mohla stačit délka 16, čímž by se v jednom okamžiku mohlo načíst až 15*16 souborů (jedno vlákno musí být vyhrazené na načítání souborů adresáře a na kontrolu názvů souborů).
Myslíte že je to takhle dobrý nápad, případně máte nějaké typy? Teprve s tím začínám tak by mě zajímalo jestli je to dobrý koncept.