videos uso tutorial son que procedimientos parametros los hacer funciones con como c++ boost boost-thread

c++ - uso - ¿Cómo pasar un argumento para impulsar:: hilo?



tutorial de funciones en c++ (3)

El siguiente código boost::bind( &clientTCP::run , this ) define una función callback. Se llama a la función de run en la instancia actual ( this ). Con boost :: bind puedes hacer lo siguiente:

// Pass pMyParameter through to the run() function boost::bind(&clientTCP::run, this, pMyParameter)

Vea la documentación y el ejemplo aquí:
http://www.boost.org/doc/libs/1_46_1/doc/html/thread/thread_management.html

Si desea construir una instancia de boost :: thread con una función u objeto que se pueda llamar que requiera que se proporcionen argumentos, esto se puede hacer pasando argumentos adicionales al constructor boost :: thread:

void find_the_question(int the_answer); boost::thread deep_thought_2(find_the_question,42);

Espero que ayude.

thread_ = boost::thread( boost::function< void (void)>( boost::bind( &clientTCP::run , this ) ) );

¿Es posible que run tenga un argumento como este?

void clientTCP::run(boost:function<void(std::string)> func);

y en caso afirmativo, cómo se debe escribir mi llamada boost :: thread

Gracias.


Solo quería señalar, para futuros trabajos, que Boost por defecto pasa los argumentos por valor. Entonces, si desea pasar una referencia, tiene los métodos boost::ref() y boost::cref() , el último para referencias constantes.

Creo que aún puedes usar el operador & para referenciar, pero no estoy seguro, siempre he usado boost::ref .


thread_ = boost::thread( boost::function< void (void)>( boost::bind( &clientTCP::run , this ) ) );

La bind y la function son innecesarias, hacen que el código sea más lento y utilizan más memoria. Solo haz:

thread_ = boost::thread( &clientTCP::run , this );

Para agregar un argumento solo agrega un argumento:

thread_ = boost::thread( &clientTCP::run , this, f );