Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Asp net multithreading
mercoledì 20 febbraio 2008 - 10.03
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
mer 20 feb 2008 - 10:03
Salve. Come da Titolo, ho una applicazione in asp net. Qui faccio l'elaborazione di un file di testo molto lungo, anche 1.000.000 di record. Vorrei in pratica spacchettare questo file in 3 e lanciare l'elaborazione su 3 thread.
Sto utilizzando questo codice per la "partenza"
In un arraylist metto parte del file che divido per tre e lo passo alla funzione ELABORAZIONE_PARTE1
Dim pippo1 As New Elaborazione_class
Dim pippo2 As New Elaborazione_class
Dim pippo3 As New Elaborazione_class
pippo1.ArrayRecord = Int1_Array
pippo2.ArrayRecord = Int2_Array
pippo3.ArrayRecord = Int2_Array
T1 = New Thread(AddressOf pippo1.ELABORAZIONE_PARTE1) 'questo è membro di Elaborazione_class
T1.Start()
T2 = New Thread(AddressOf pippo2.ELABORAZIONE_PARTE1) 'questo è membro di Elaborazione_class
T2.Start()
''T3 = New Thread(AddressOf pippo3.ELABORAZIONE_PARTE1) 'questo è membro di Elaborazione_class
''T3.Start()
Finchè lancio un solo thread questo comincia e fa l'elaborazione, già se ne faccio partire due cominciano i problemi. Ma niente sono costretto a replicare per tre la funzione ELABORAZIONE_PARTE1, visto che i thread fanno partite le elaborazioni in parallelo? E quindi fare:
T1 = New Thread(AddressOf pippo1.ELABORAZIONE_PARTE1)
T1.Start()
T2 = New Thread(AddressOf pippo2.ELABORAZIONE_PARTE2)
T2.Start()
''T3 = New Thread(AddressOf pippo3.ELABORAZIONE_PARTE3)
''T3.Start()
C'è modo di sfruttare la stessa elaborazione per tutti e tre i thread? In +, avete qualche buon linck, guida, tutorial che spieghi i thread?
Grazie mille a tutti
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
mer 20 feb 2008 - 11:28
Non so se hai ricopiato il codice ma mi sembra che hai passato lo stesso array all'elaborazione 2 e 3. Se puoi metti la firma del metodo ELABORAZIONE_PARTE1 della classe elaborazione_class.
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
mer 20 feb 2008 - 11:39
Non so se hai ricopiato il codice ma mi sembra che hai passato lo stesso array all'elaborazione 2 e 3.
Si il codice era copiato quindi gli array sono giusti per il 2 e il 3
Se puoi metti la firma del metodo ELABORAZIONE_PARTE1 della classe elaborazione_class.
Dim pippo1 As New Elaborazione_class
pippo1.ArrayRecord = Int1_Array
T1 = New Thread(AddressOf pippo1.ELABORAZIONE_PARTE1)
T1.Start()
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
mer 20 feb 2008 - 14:43
Ciao,
ho provato a implementare il funzionamento della tua classe (anche se non sapendo cosa fà non sono sicuro che sia uguale) e non ho riscontrato problemi.
' Questa è la classe con la variabile ed il metodo che dovrebbe elaborare la parte del file che gli passi
' Elaborazione_Parte1 qua inserisce numeri a caso per simulare qualche operazione
Public Class elaborazione_Class
Public ArrayRecord As ArrayList
Public Sub Elaborazione_Parte1()
While True
Dim k = Math.Round(Rnd(), 5)
If k = 0.12811 Then
ArrayRecord.Add(k)
End If
If ArrayRecord.Count > 200 Then
Exit While
End If
End While
End Sub
End Class
' per testarla ho usato queste linee di codice
Dim pippo1 As elaborazione_Class = New elaborazione_Class
Dim pippo2 As elaborazione_Class = New elaborazione_Class
Dim pippo3 As elaborazione_Class = New elaborazione_Class
pippo1.ArrayRecord = a1
pippo2.ArrayRecord = a2
pippo3.ArrayRecord = a3
Dim T1 As Threading.Thread = New Threading.Thread(AddressOf pippo1.Elaborazione_Parte1)
Dim T2 As Threading.Thread = New Threading.Thread(AddressOf pippo2.Elaborazione_Parte1)
Dim T3 As Threading.Thread = New Threading.Thread(AddressOf pippo3.Elaborazione_Parte1)
T1.Start()
T2.Start()
T3.Start()
Durante l'esecuzione dei 3 thread ho analizzato la proprietà count degli array e funzionavano correttamente. Se ti và in privato puoi mandarmi la classe così cerchiamo di capire meglio.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !