Ciao a tutti .Volevo sapere se è possibile in qualche modo,far lavorare parallelamente ,in contemporanea più funzioni in C++.
Ciao a tutti .Volevo sapere se è possibile in qualche modo,far lavorare parallelamente ,in contemporanea più funzioni in C++.
Sì, devi usare i thread, ma tieni conto che non è un argomento banale. Come usare i thread dipende dal sistema operativo su cui stai lavorando.
Amaro C++, il gusto pieno dell'undefined behavior.
Manca l'indicazione del linguaggio nel titolo, che dovrebbe comunque dare un'idea del contenuto della discussione. Lo aggiorno io.
Ad ogni modo, per far lavorare "in parallelo" funzioni diverse sono stati inventati i thread. Per ciascuna piattaforma ci sono le API relative per la creazione dei thread.
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
se vuoi generare più processi di un eseguibile, dipendendo dal tuo sistema operativo, puoi fare dei fork
Dipende dal sistema operativo e dalla macchina. A seconda dello stesso puoi fare delle fork e/o dei thread, prelativi o collaborativi, su multiprocessori (comprese eventuali ulteriori accelerazioni hardware ad esempio offerte da una una o piu' schede grafiche) reali o virtuali, senza escludere dalla conta delle possibiltà che hai.. il grid computing.Originariamente inviato da Clout
Ciao a tutti .Volevo sapere se è possibile in qualche modo,far lavorare parallelamente ,in contemporanea più funzioni in C++.
;-)
Vi riporto in seguito il codiceMI SCUSO PER IL CODICE POCO CHIARO IN ALCUNI PUNTI)
using namespace std;
void pister(int i);
void machine(int m);
int main(int argc, char *argv[])
{
pister(10);
getchar();
return 0;
}
//Creazione della funzione pister per l'animazione del percorso
void pister(int i)
{
for(i= i;i!=0 ; i=i-3)
{
cout<<"| |"<<" | |\n";
cout<<"|------|"<<" |------|\n";
cout<<"| |"<<" | |\n";
}
}
// Crezione funzione machine per i movimenti della navetta
void machine(int m)
{
for (m=m;m !=0;m= m-3)
{
cout<<" ___ \n";
cout<<" _| |_ \n";
cout<<" /_______\ \n";
system("CLS");
}
}
E sicuramente poco ortodosso ,ma in pratica dovrebbe essere un videogame in cui ci sono due funzioni la funzione piste(),e la funzione machine();
La prima stampa con un ciclo infinito dei qudrati ai bordi dello schermo;ciò dà la senzazione di movimento;
La seconda funzione invece stampa acnchessa all'infinito una navetta("non molto chiara")una macchina.
il mio scopo è quello di far lavorare contemporanemamente le due funzioni per ottenere l'effetto di una navetta in corsa.
P.S
MI SCUSO PER IL CODICE POCO CHIARO IN ALCUNI PUNTI!
Mi scuso per il codice in alcuni punti poco chiaro!
Al di là del fatto che hai postato del codice non compilabile (mancano le inclusioni degli header), un programma del genere non può funzionare, visto che le operazioni di inserimento eseguite in contemporanea darebbero come risultato un output mescolato, e, anche se ciascuna operazione di inserimento fosse atomica, otterresti in output una linea appartenente a un thread e una all'altro (o cose analoghe).
Dovresti "mescolare" da te i due output in maniera adeguata, e naturalmente inserire un qualche ritardo per ogni esecuzione del ciclo.
Comunque le applicazioni console non sono le più adeguate per fare giochini grafici, o, se proprio vuoi, devi usare le apposite API per cambiare i singoli blocchi sullo schermo: iostream è pensata semplicemente per gestire l'output "normale" su schermo.
Amaro C++, il gusto pieno dell'undefined behavior.