Vamos a un poco de teoria, prometo que es resumida.
¿Que es un proceso?, un proceso a grandes rasgos es un programa en ejecucion, con todo su ambiente cargado,
con su seccion de pila datos y heap.
¿Que es un hilo?, es un camino de ejecucion, el mas simple de los procesos tiene al menos 1 hilo (el main).
Entonces los procesos pueden tener varios hilos, como minimo uno, y los hilos pueden ejecutarse en paralelo, Dando lugar a lo llamado Multithreading, o dicho de otra manera que nuestro programa haga varias cosas "al mismo tiempo".
Generalmente, los programadores basicos e intermedios, nunca han usado mas de un hilo (en programas estructurados, en objetos si, pero no se han enterado de ello).
varios hilos de un mismo proceso, comparten el area de datos, esto quiere decir que si pongo una variable global, todos los hilos lo van a poder ver.
Vamos a lo practico.
Código: Seleccionar todo
#include <windows.h>
#include <string.h>
#include <process.h>
int main()
{
int threadID;
_beginthreadex(NULL, 0,funciondehilo ,0,0,&threadID); /*Creo un hilo de 1mb de stack, y le paso como parametro el nombre de la funcion */
.
./*el codigo de aqui se ejecutaria en paralelo con el codigo del hilo*/
.
WaitForSingleObject(threadID,INFINITE); /*espero a que el hilo termine */
}
unsigned __stdcall funciondehilo()
{
printf("soy un hilo y me voy a dormir 5 segundos");
sleep(5000);
}
Este es un programa muy simple de hilos con la Api de windows. Obviamente puedo levantar tantos hilos como guste.
Podria crear un hilo por cada cliente que se me conecte,para que lo atienda, o evitar heuristicas o tantas otras cosas, mas interesantes.
Algunas veces voy a necesitar que los hilos se sincronicen,en esos casos, hay varios elementos, como Mutex, memora compartida, Semaforos, para evitar que muchos hilos accedan a un recurso global al mismo tiempo, (como ser una entrada salida, la pantalla , el printf).
bueno una pequeña introduccion a los hilos, el que quiera ampliar que me pregunte o bien busque en google.
Saludos!