Implementación de automatización usando Busy Waiting o Threads en c++

Estoy tratando de automatizar el equipo del controlador (un robot elige un chip y lo coloca en una plataforma de hardware) con el siguiente requisito:

1. Hay 6 sitios para el controlador, una vez que el controlador coloca un dispositivo en ese sitio, el controlador devolverá un código de error:

código1 para listo para probar, código2 para error y si está en proceso no se ha devuelto ningún código.

2. Hay una PC maestra que controla la operación del controlador, y la comunicación b / w maestra y las PC del sitio están usando Staf

3. Necesito usar ese código para ejecutar algunas pruebas (que ya se implementaron y funcionan correctamente). El controlador coloca el dispositivo en un orden FIFO, el primer sitio devuelve el código primero y el último sitio devuelve el código al final.

4.La PC del sitio actúa pasivamente, qué PC maestra determinará cuándo ejecutar y cómo ejecutar las pruebas. Site PC solo sabrá si el controlador está listo y luego ejecutará las pruebas.

Entonces, mi pregunta sería: en este caso, para las PC del sitio (basadas en Windows con perl y .net habilitado), el método de espera ocupado es mejor o el mecanismo de condición de espera se adapta mejor:

Por ejemplo: el código de ejemplo sería:

void runTestonSite()
{
    for(;;)
    {
        if(returnCode == code1)
        {
            testStart(arg1,arg2,arg3);
        }
    }
}

o hay alguna forma mejor de hacer este tipo de tarea?

#include <boost/thread.hpp>

void getReturnCode() { 
    // do stuff
}

void RunTestOnSite() { 
    // do stuff
}

int main (int argc, char ** argv) {
    using namespace boost; 
    thread thread_1 = thread(getReturnCode);
    thread thread_2 = thread(RunTestOnSite);

    // do other stuff
    thread_2.join();
    thread_1.join();
    return 0;
}

Por favor asesóreme, gracias

preguntado el 27 de julio de 12 a las 21:07

Busy-wait siempre es lo peor y solo debe usarse si no hay otras alternativas disponibles.

Pero si usa subprocesos, ¿qué pasa si runTestOnSite falla por algún motivo desconocido? ¿Cómo vuelve el programa a los subprocesos en bucle? Gracias por la pronta respuesta. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.