[C con Clase] Enviar dos comandos al mismo tiempo
Luis Pedro Méndez
elinv.elinv en gmail.com
Mie Sep 21 14:51:21 CEST 2011
Hola abel, saludos:
podrías probar a utilizar múltiples threads(hilos), acá te dejo un ejemplo
para que lo analices. En mi caso lo he comprobado en CODE BLOCKS
efectivamente, échalo a correr y mira los resultados de los bucles, como se
entre mezclan al ejecutarse simultáneamente.
----------------------------------------------------------
#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;
CRITICAL_SECTION Section;
inline void funcion_uno(void *P)
{
int Count;
for (Count = 1; Count < 11; Count++)
{
EnterCriticalSection(&Section);
cout << "Funcion 1: " << Count << " " << endl;
LeaveCriticalSection(&Section);
}
return;
}
inline void funcion_dos(void *P)
{
int Count;
for (Count = 10; Count > 0; Count--)
{
EnterCriticalSection(&Section);
cout << "Funcion 2: " << Count << " " << endl;
LeaveCriticalSection(&Section);
}
return;
}
int main()
{
//Una forma
//-----------------------------
//InitializeCriticalSection(&Section);
//_beginthread(Func1, 0, NULL);
//_beginthread(Func2, 0, NULL);
//Sleep(10000);
//DeleteCriticalSection(&Section);
//-----------------------------
//Otra forma
//-----------------------------
HANDLE hThreads[2];
InitializeCriticalSection(&Section);
hThreads[0] = (HANDLE)_beginthread(Func1,
0,
NULL);
hThreads[1] = (HANDLE)_beginthread(Func2,
0,
NULL);
WaitForMultipleObjects(2,
hThreads,
TRUE,
INFINITE);
DeleteCriticalSection(&Section);
//-----------------------------
cout << "Saliendo del programa" << endl;
return 0;
}
----------------------------------------------------------
Atentamente.
Elinv.
(http://todocporelinv.blogspot.com/)
El 21 de septiembre de 2011 01:19, Abel <aydabella en yahoo.com.ar> escribió:
> Hola a todos,
> aqui nuevamente con la siguiente pregunta.
> En mi programa tengo la siguiente situación:
> - envío un comando preguntando una información de un aparato, por decir:
> send(dame_ID,respuesta);
> el problema es que C/C++ solo me permite enviar otro comando, despues que
> send(..) haya concluido, lo que quiero es:
> - cuando envío el send(...), paralelamente enviar otro comando, por ejemplo
> start(...);
> El aparato con el que me quiero comunicar, tiene un sistema de seguridad,
> solo puedo comunicarme con él de esta forma:
> - send(...) //el aparato espera a start(...) durante unos 5 segundos y
> recien me envía una respuesta correcta, sinó en respuesta tengo un
> "resp_out"
> - solo puedo enviar otro comando, despues de haber recibido una respuesta
> de send(...).
> Espero me puedan dar alguna idea, si no me entendieron, puedo dar mas
> detalles al respecto.
> Gracias.
> Abel
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110921/258ea9db/attachment.html>
Más información sobre la lista de distribución Cconclase