Buenas:
busco en buscadores de programación de C en Linux no encuentro nada y me han comentado que es igual que en Windows,
no te vendria mejor usar fork()? , de esta encontraras miles de tutoriales
entiendo esta función pero a la hora de la práctica no se utilizar
bueno, _beginthread recibe como primer parametro un puntero a una funcion void (void*). O sea, primero preparas una funcion que devuelva void y que reciba un puntero void como parametro , en la que este el cuerpo del proceso paralelo que vayas a usar. Despues, le pasas el nombre de la funcion como primer parametro de _beginthread. Como segundo parametro pasale un 0. Como tercer parametro, pasale un puntero a void del dato que quieres que reciba el proceso como dato.
Que es eso de un puntero a void? normalmente, los punteros son de un tipo de dato, sin embargo, cualquier direccion de memoria puede representarse como un puntero void* que indica una direccion de memoria sin saber que hay en ella. Mirate en google Casting.
Si quieres pasarle multiples datos, o bien te los preparas en una estructura de datos y le pasas el puntero (vectores, arrays, mapas...) o bien te preparas una estructura y le calzas los datos, si son fijos. Al convertirla en un puntero void* no puedes usar de nuevo la estructura a no ser que la recastees en el tipo original.
ejemplo, un temporizador para pobres:
//una estructura para guardar los multiples datos
typedef struct TIPO_DATO
{
int hora;
int minutos;
int segundos;
};
//una funcion void(void*) que contiene el cuerpo del proceso y que termina con _endthread();
void hilo(void * datos)
{
TIPO_DATO * in=(TIPO_DATO*)datos;
int tot=in.horas*3600 + in.minutos*60 + in.segundos;
Sleep(tot*1000);
MessageBox(0,"TIME UP!",0,0);
_endthread();
}
//bucle principal en el que se lanza el hilo y luego se paraliza en un bucle.
void main(void)
{
TIPO_DATO dat;
dat.horas=0;
dat.minutos=1;
dat.segundos=30;
_beginthread(hilo,0,&dat);
while(true)
{
Sleep(1); //fjate en esto!
}
}
en el bucle he colocado un Sleep, por que si no le dejas descansar al hilo para hacer los cambios de contexto, el programa subira al 99% de CPU.
espero que te haya ayudado!