PDA

View Full Version : [C++ | Thread] Cosa è un Thread ...


Alex_87_xelA
24-11-2008, 10:06
scusate l'ignoranza... so "diciamo" in generale che un programma mandato in esecuzione è un PROCESSO, e questo processo chiama come thread principale il main del programma in esecuzione.

vorrei fare qualche piccola domanda.

1) cos' è effettivamente un thread ?
2) perchè viene utilizzato ?
3) conviene in alcuni casi il suo utilizzo o è meglio non usarli ?

è solo una mia curiosità generale.

GRAZIE in anticipo delle vostre risposte !!!

{
NB : parlo dei thread realizzati utilizzando alcune funzioni come queste :
CreateThread(......);
ExitThread(.....);
SuspendThread(.....);
ResumeThread(.....);
GetCurrentThread(.....);
.....
.....
}



//Questo esempio mostra come far fare due cose contemporaneamente ad un programma: spostare a casaccio il cursore del mouse e stampare numeri all'infinito:


//----------------------
#include <windows.h>
#include <iostream.h>
#include <stdlib.h>

DWORD funz1 (LPDWORD lpdwParam) {

for (int i = 0; ; i++)
{
//adattare i due numeri alla vostra risoluzione
int x = 0 + rand() % 1024;
int y = 0 + rand() % 768;
SetCursorPos(x, y);
}

return 0;

}


int main () {
DWORD dwThreadId, dwThrdParam = 1;

cout << "Ciao, mentre stampo all'infinito i numeri l'altro\\nthread muove a caso il cursore del mouse\\n";

HANDLE thread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE) funz1, &dwThrdParam, 0, &dwThreadId);

for (int i = 0; ; i++)
{
cout << "Ciclo numero " << i << " premere CTRL-C per terminare"<<endl;
}


return 0;
}
//--------------------------------


questo è un esempio che ho trovato !!!

banryu79
24-11-2008, 13:03
Butto qua due righe trovate al volo nel web, dato che nessuno ti ha ancora risposto e io adesso non ho tempo ne voglia per mettermi a scrivere con calma cosa è unThread.

tratto da questa pagina (http://cnx.org/content/m14565/latest/).

Thread: definizione


Un thread (di controllo) è una lista di istruzioni eseguite
sequenzialmente da un programma. I thread di un programma
condividono uno stesso spazio di indirizzamento. Pur avendo
stack e variabili locali separate, condividono le variabili
globali. I thread sono "leggeri", nel senso che la creazione,
distruzione e sincronizzazione sono relativamente economiche
grazie alla condivisione dello spazio di indirizzamento.

Le ragioni per organizzare un programma in un certo numero di
thread possono essere molteplici:


* Certi programmi si scrivono più semplicemente, in
special modo le collezioni di compiti debolmente connessi
(cioè largamente indipendenti).
* I programmi interattivi risultano più efficienti
laddove il servizio dell'input o il display dell'output sono
organizzati in thread distinti.
* I programmi sono potenzialmente parallelizzabili su
architetture multi-processore o multi-core.
* Il problema in esame richiede parti di programma in
comunicazione asincrona tra loro.
* E' utile imporre una struttura modulare al
codice.