drasko, predlazem ti da prvo odradis neko interno baferovanje. Aplikacija bi trebalo da odvoji sto vise memorije moguce i da slike koje svlacis sa kamere trpas u bafer dok se ne napuni, kad se napuni, onda se nit koju recimo nazoves WriterThread probudi i u cugu ceo bafer strpa na kraj zeljenog fajla. Da ReaderThread ne bi cekala da WriterThread odradi posao predlazem da prosto imas dva bafera iste velicine i da u svakom trenutku jedan od njih uvek bude ReadBuffer, dok bi drugi bio WriteBuffer. Na ovaj nacin ReaderThread nit koja svlaci slike iz kamere pise u WriteBuffer, dok u isto vreme WriterThread iz ReadBuffer-a cita podatke i pise ih na kraj fajla.
Jasno je sta se ovim postize - smanjujes FileIO (konkretno mislim na pisanje na disk).
Za citanje sa kamere ne znam sta da ti kazem jer nisi dao bas puno informacija. Veza sa kamerom bi trebalo da bude opako brza da bi postigao zeljenu brzinu od 2000 Slika/sec sto otprilike znaci 2000 * 16 kB = 32000 kB/sec, dakle treba ti realna brzina od skoro 30 Mb/sec da bi (teorijski) mogao da ostvaris svoj cilj...
Neki ce garant prevrnuti ocima kad budu procitali moj zadnji predlog, ali sta da se radi... - Elem, predlazem da probas da stvar uradis na Linux ili nekoj UNIX platofmi. Posebno mislim na Linux sa 2.6 kernelom i GLIBC-om koji "zna" za NPTL. Iz svog licnog iskustva jedino sam na Windows-u vidjao da kada program ima puno I/O operacija CPU bude jaaaaako zauzet. Molim sve koji se ne slazu sa ovim zadnjim da ne komentarisu ovo uoste - ovo je moj licni predlog drasku. Ne obazirite se na njega. Naravno u nekoj drugoj diskusionoj grupi bi mogli ovo detaljno da ispitamo.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin