Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - dubbio thread...
Forum - C# / VB.NET - dubbio thread...

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 14:24
Giovedì, 11/06/2009
Ciao,

sto costruendo un programma che svolgie miliardi di calcoli...
(somme, divisioni e confronto dei numeri su una tabella di numeri)

la domanda è: se divido le tre procedure in tre thread (una per le somme, una per le divisioni ed una per il confronto, tutti e tre avranno i output un file di testo)
è più veloce? o la velocità è la stessa?

thanks...

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 15:08
Giovedì, 11/06/2009
conviene che apri 1 solo thread e gli fai fare le cose una dopo l'altra... s ene apri 3 assieme lo fai solo sforzare di piu non sarà affatto piu veloce siccome deve lavorare solo du cpu... ti consiglio di fare si un thread ma che esegue le cose una dopo l'altra

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 15:46
Giovedì, 11/06/2009
Grazie...

Non sono ferratissimo e sicuramente sto dicendo un eresia...

Ma avendo un dual core...un thread per processore?
esiste questa possibilità?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:56
Giovedì, 11/06/2009
Se i calcoli sono completamente indipendenti, potresti sicuramente avere beneficio allocando i thread sui vari core.

Ma se per fare un calcolo hai bisogno del risultato del precedente, ovviamente, i thread non ti serviranno ...

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 16:02
Giovedì, 11/06/2009
Mica mila...uno posso sicuramente slegarlo...

hai link che spieghi "come allorare un thread su un core" ?
o qualcosa del genere?

grazie mille!

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 16:16
Giovedì, 11/06/2009
non credo tu possa far eseguire i thread sul core che vuoi tu.....

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 16:29
Giovedì, 11/06/2009
Dovresti poter gestire l'affinity del thread con

[DllImport("kernel32.dll")]  
static extern IntPtr GetCurrentThread();

[DllImport("kernel32.dll")]  
static extern IntPtr SetThreadAffinityMask(IntPtr hThread, IntPtr dwThreadAffinityMask);

SetThreadAffinityMask(GetCurrentThread(), new IntPtr(1 << (int)cpuID));

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 16:42
Giovedì, 11/06/2009
Grazie.

Oltre al codice, vorrei documentarmi a dovere.

Avete riferimenti?

questo può andar bene?

http://msdn.microsoft.com/it-it/library/ms187104.aspx

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:19
Giovedì, 11/06/2009
A livello generale, sì ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo