<div dir="ltr">> Per caso mi è capitato di pensare un po' al tuo problema e mi sono detto<br>> che c'è qualcosa che non va'. Tu hai due casi ogni volta che copi un<br>> file: la destinazione esiste oppure no. Se la destinazione non esiste<br>
> il thread non viene in qual modo influenzato e quindi non c'è necessità<br>> che si blocchi in attesa di una risposta dell'utente. Mi sbaglio forse?<br>> Perché in questo caso un lock banale risolve il tuo problema.<br>
<br><br><br>> Supponiamo di avere, nell'ordine, queste richieste di copia<br>><br>> copy a b<br>> copy c d<br>> copy e f<br>><br>> questo significa che la terza operazione, se vuole sovrascrivere f, blocca tutte le altre anche se non hanno nulla a che fare con f?<br>
<br><div>Allora.... </div><div><br></div><div> - Ho una lista di files che viene generata tramite filtri di inclusione e/o esclusione.</div><div> - Questa lista viene passata al ciclo che esegue la copia file per file.</div>
<div> - Per ogni file viene lanciato un Thread (con possibilità di limitare il numero di thread)</div><div> - Durante la copia uno o più o tutti i file possono essere già presenti nella/e cartella/e di destinazione.</div>
<div> - In caso venga chiamato con il parametro --overwrite=ASK, lo script, al PRIMO file esistente che trova deve bloccare tutto quindi:</div><div>   1 - Threads già avviati ma che non hanno ancora fatto la verifica di os.path.exists (in effetti se è il primo gli altri non ci sono ancora arrivati)</div>
<div>   2 - Ovviamente bloccare eventuali nuovi thread sul nascere.</div><div>   3 - Attendere una risposta dall'utente.</div><div>   4 - Reimpostare il parametro overwrite *globale*.</div><div>   5 - Riprendere da dove si era fermato.</div>
<div><br></div><div>A questo punto l'overwrire non sarà più ASK ma YES o NO, a seconda dei casi, e i rimanenti thread si comporteranno di conseguenza.</div><div><br></div><div>Da notare che l'utilizzo dei thread è più per una questione grafica (progress bar multiple) che per una questione pratica. E che comunque non mi pare molto ultile la conferma da parte dell'utente se poi si propaga per tutti i file, a quel punto chiamare lo script con --overwrite=YES o NO è più logico. Credo io.</div>
<div><br></div><div>ciao</div><div>Luca</div><div><br></div><div><br></div></div>