[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