Salve, sto preparando l'esame di sistemi operativi e ho delle cose poco chiare riguardo la gestione dei file da parte del kernel di windows tramite system call. Stavo preparando del codice per analizzare un file: il programma legge una sequenza e la ricerca nel file, e conta in quante parole questa sequenza si trova. L'idea era di progettare un processo multithreading:un thread si mette ciclando alla richiesta di nuove sequenze, e lancia a sua volta un thread per la ricerca. Alla fine, dopo il carattere '.', restituisce il risultato. La mia domanda è questa:l'accesso concorrenziale al file è gestito direttamente dalla creazioni del thread?In poche parole, se effettuo l'apertura del file dal main e passo al thread solo la sequenza da ricercare, ogni volta che lancio una ReadFile nel thread ho un nuovo file pointer al file che punta quindi all'inizio del file? Sembrerebbe di no, vi chiedo questo, perchè effettivamente non so come uscirne: se inserisco 2 sequenze il programma entra in stallo (si blocca alla chiamata WaitForMultipleObjects)... Dovrei forse usare i semafori (cosa che abbiamo studiato da pochissimo e ancora devo capire bene)?E se si, come?
Grazie per un'eventuale risposta![]()