2012-07-25 17 views
6

Así que mi pregunta en realidad tiene varias partes:Usando la biblioteca Poco C++, ¿cómo puedo pasar datos a un hilo?

Utilización de la biblioteca de roscado Poco:

  1. ¿Cuáles son todos los posibles métodos para pasar datos a las discusiones (por lo tanto la invocación hilo y para un hilo ya se está ejecutando) .
  2. ¿Qué métodos prefiere y por qué? ¿Puede proporcionar información adicional sobre su experiencia utilizando estos métodos?
  3. ¿Qué métodos recomienda Applied Informatics (el autor de Poco)? ¿Hay algún tipo de documentación adicional proporcionada por Applied Informatics que describa el paso de argumentos a los hilos?

He mirado ya aquí:

Gracias de antemano ...

Respuesta

15

La forma canónica de pasar argumentos a un nuevo hilo es a través de la subclase Runnable que necesitarás crear como punto de entrada del hilo. Ejemplo:

class MyThread: public Poco::Runnable 
{ 
public: 
    MyThread(const std::string& arg1, int arg2): 
     _arg1(arg1), 
     _arg2(arg2) 
    { 
    } 

    void run() 
    { 
     // use _arg1 and _arg2; 
     //... 
    } 

private: 
    std::string _arg1; 
    int _arg2; 
}; 

//... 

MyThread myThread("foo", 42); 
Poco::Thread thread; 
thread.start(myThread); 
thread.join(); 

Para pasar datos a un hilo que ya se está ejecutando, cuál es la mejor solución depende de sus requisitos. Para un escenario típico de subprocesos de trabajo, considere usar Poco::NotificationQueue. Una muestra completa con explicaciones se puede encontrar aquí: http://pocoproject.org/slides/090-NotificationsEvents.pdf

+2

Del hombre mismo. Günter es el fundador de Applied Informatics y un Project Lead en la Biblioteca Poco C++. ¡Muchas gracias, Günter, por tomarse el tiempo para responder esta pregunta! – Homer6

+0

Para las personas que se encuentran con esta publicación, también encontré que este enlace es útil: http://www.cs.bgu.ac.il/~spl111/PracticalSession09_-_Threads_Using_POCO – Homer6

Cuestiones relacionadas