Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/04/2014, 12:41
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: duda al crear procesos en windows

En windows mejor usa _beginthreadex o la funcion de la api CreateThread:

Código C:
Ver original
  1. HANDLE ht;
  2. unsigned long tid;
  3.  
  4. if(!(ht = (HANDLE)_beginthreadex(0, 0, &mi_thread, 0, 0, &tid))) {
  5.     //error
  6. }
  7. else {
  8.     //si necesitas recuperar datos del proceso tienes que esperar a que termine
  9.     WaitForSingleObject(ht, INFINITE);
  10.  
  11.     //finalmente liberas el puntero
  12.     CloseHandle(ht);
  13. }

Busca mas información sobre esta funcion para ver los argumentos y los valores de retorno.


"...se nesesita ser muy cuidado al programarlos y que se nesesita de un semaforo..."

Se necesita un semaforo cuando trabajas con variables globales, de lo contrario no lo necesitas. La api de windows lleva implementadas las funciones de seccion critica que seria un semaforo. La finalidad del semaforo es impedir que dos o mas procesos intenten trabajar sobre una misma seccion de memoria.


"...cuando seria comveniente usar los threads..."

Se usan cuando no quieres bloquear el proceso padre, un ejemplo muy comun es en aplicaciones de red. Cualquier situacion donde una funcion bloqueante no es indispensable para el funcionamiento de la aplicacion se suele apartar en un proceso, una vez finalizado se notifica (al proceso padre, o donde sea) y se recuperan los datos con los que trabajaba el thread.


Saludos
vosk