|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
[Visual C++] e multithreading ?
Visual C++ gestice la programmazione multithreads ?
In pratica si può sviluppare un'applicazione che faccia "girare" due processi distinti, in parallelo, su un dualcore ? Ma dove si trova un po' di documentazione sull'argomento ? ![]() Ma cioè.. se ho due core perchè devo farne lavorare solo uno? Sui link riferiti al compilatore, ho trovato solo: come compilare facendo "lavorare" entrambe i core, ma non di più. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Per potrere sfruttare entrambi i core devi creare diversi thread, questa è la sezione della MSDN in cui sono trattati http://msdn.microsoft.com/en-us/libr...16(VS.85).aspx
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1174
|
Se l'obbiettivo e' quello del "multi-core", magari puo' interessarti anche la sezione relativa all'OpenMP.
http://msdn.microsoft.com/en-us/library/tt15eb9t.aspx OpenMP e' portabile. P.S. Esiste anche la Threading Building Blocks (TBB) sponsorizzata da Intel. Non e' integrata al VC, ma e' scaricabile qui: http://www.threadingbuildingblocks.org/ Ultima modifica di BrutPitt : 22-05-2009 alle 00:12. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
La cosa può essere - volendo - anche molto semplice. Con Visual Studio 2010 (disponibile la beta 1 pubblica) puoi usare una funzione chiamata parallel_for, disponibile anche come parallel_for_each se vuoi fare il loop su una classe che supporta l'iterazione. Usando tale versione di Visual Studio, tra l'altro, avrai a disposizione anche le espressioni lambda e la keyword auto, due cose comodissime. Nota che parallel_for è un'estensione Microsoft e non è al momento supportata su altre piattaforme. Le altre due funzionalità menzionate sono invece parte del C++0x e dunque dovrebbero essere supportate su tutte le piattaforme per cui è disponibile un compilatore al passo con tale standard.
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Grazie a te e anche agli utenti che mi hanno postato i link sopra. |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
sicuro che sia proprio "auto"? di che si tratta? |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
La keyword auto è parte dello standard C++0x e dove si discute di questo è spesso menzionata. Ad ogni modo eccoti una breve spiegazione (il concetto è triviale).
Supponiamo di avere un frammento di codice tipo questo: Codice:
std::map<int, std::pair<char, std::vector<std::string>>> x = qualche.chiamata(); Chiudo con un esempio in cui auto è quasi indispensabile. Codice:
int valori[255];
auto fn = [&valori] (int indice) { valori[indice] = indice % 3; }; //preferiresti specificare il tipo di fn per intero? rly??? =)
parallel_for(0, 255, fn); //sì, fn si potrebbe scrivere inline, ma è meno chiaro e poi questo è un esempio di auto!
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
dico una cazzata o "auto" non é altro che il "var" del C# ?
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ho capito grazie, molto interessante; peró non sono sicuro che questa parola chiave sia stata supportata da Microsoft, dovrebbe apparire nell'elenco che ti ho linkato...
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
E' supportata in Visual Studio 2010 Beta1, insieme ad altre caratteristiche dello standard c++0x. Non è tuttavia supportata in alcuna versione precendente (incluso VS2008 SP1)
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Allego la classe: vedi post sotto
Ultima modifica di Albitexm : 25-05-2009 alle 22:51. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
http://www.microsoft.com/downloads/d...DisplayLang=en "Microsoft Parallel Extensions to .NET Framework 3.5, June 2008 Community Technology Preview" Ma non saprei se è compatibile anche con le versioni Express di Visual Studio Comunque ho trovato anche un *.cpp che gestice i threads in un programma di scacchi open source: Crafty. E' in C non in C++. nota: è free, liberamente e legalmente scaricabile. Ultima modifica di Albitexm : 25-05-2009 alle 22:54. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:21.





















