Ho un codice in cui devo leggere alcuni file binari nel database. Ho scritto un ciclo For che itera sul mio array di percorsi di file, quindi chiama una funzione READ che legge quel file nel database.
Eseguo questo codice con il ciclo for tradizionale tutto procede liscio, ma poi cambio il for a Parallel.For e non va liscio, aggiusto il mio codice in quanto ho trovato molta area grigia e risorse condivise stanno creando problemi in loop logic. Quindi, faccio tutto isolato su 1 iterazione del ciclo.
Ora il metodo parallelo rende veloce il mio codice con il doppio della velocità con un'eccezione. L'eccezione è
- Abbiamo 600 file da leggere, su 600 abbiamo solo 5-6 file di grandi dimensioni.
- Da questi grandi file principali, uno o due file non sono stati inseriti nel database e non viene generata alcuna eccezione. Quando cambio semplicemente Parallel.For to For vengono tutti letti, quindi il codice all'interno del suo scope va bene.
Puoi suggerire un metodo o un'alternativa a Parallel.Per, dato che mi sento come se uno dei thread principali morisse senza motivo, sembra roba impossibile, ma questo è ciò che sta accadendo mentre sto creando log ad ogni passo e iterazione differente mostra l'arresto del filo in qualche altro punto.
Inoltre, sebbene disponga di un processore 4Core, esegue fino a 30 -40 file alla volta. Mi aspettavo che fosse come 3-4 thread al massimo per documentazioni. Qualche idea.