Utilizar Metodos de Clase como Thread en Windows

Algo que suele suceder en C++ cuando se desarrolla es que aveces se quiere utilizar un metodo de la clase desarrollada como Thread, para esto hay que hacer algunos pasos adicionales, de manera que no provoque ningun error y todo funcione correctamente 馃檪

Veamos un ejemplo, una clase llamada IOCPNetwork (nombre referenciado al m茅todo de utilizaci贸n de sockets en windows)

class IOCPNetwork
{
private:
SOCKET ListenSocket;
/* .. otras variables utiles .. */
public:
IOCPNetwork();
~IOCPNetwork();
void InitWorker();
DWORD WINAPI WorkerThread(LPVOID lpParam);
DWORD WINAPI AcceptThread(LPVOID lpParam);
/* otros metodos de la clase */
};

Para hacer que InitWorker() inicialize WorkerThread como un thread de windows vamos a hacer lo siguiente,
1. Cambiamos la definicion en la clase de

DWORD WINAPI WorkerThread(LPVOID lpParam);
a
static DWORD WINAPI WorkerThread(LPVOID lpParam);

y dentro de InitWorker() har铆amos lo siguiente:

void IOCPNetwork::InitWorker()
{
DWORD dwThreadId;
CreateThread(0, 0, WorkerThread, (void *)this, 0, nThreadID);
}

pero porque le pasamos como par谩metro el puntero this ?
sencillo, para luego poder acceder desde nuestro Thread a los m茅todos de la clase haciendo lo siguiente

DWORD WINAPI WorkerThread(LPVOID lpParam)
{
IOCPNetwork * This = (IOCPNetwork*)lpParam;
This->Metodo();
return 0;
}

Espero que les haya servido de ayuda 馃檪
Saludos!

Tags: #C++ #Programming #windows

author
Author: 
    Listar los archivos de un directorio usando PHP
    Les dejamos un peque帽o script el cual
    Gestionando redes y direcciones IP usando PHPIP
    A veces tenemos que administrar grandes redes
    PHP For Dummies
    Temario del Documento: 1. Variables 2. La
    Ventajas de usar MySQLi
    A la hora de realizar aplicaciones PHP/MySQL,

    Leave a reply "Utilizar Metodos de Clase como Thread en Windows"

    Must read×

    Top