elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Hilos - basico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Hilos - basico  (Leído 2,528 veces)
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
[Ayuda] Hilos - basico
« en: 20 Junio 2013, 18:35 pm »

Buenos dias damas y caballeros.
Necesitaria a alguna alma generosa que me oriente como hacer esto.
Lo unico que necesito es crear un hilo y ejecutar una funcion.
Lo hice de forma global y anda todo bien, el problema viene cuando lo quiero hacer en una clase.

El codigo de la discordia:

Código
  1. DWORD WINAPI Socket::ThreadFunc(LPVOID){
  2.    recibirOrdenes();
  3.    return 0;
  4. }
  5.  
  6. void Socket::SubProceso(){
  7.    DWORD dwThreadId;
  8.    CreateThread(NULL, 0, ThreadFunc, 0, 0, &dwThreadId);
  9. }

Error:

Citar
error: argument of type 'DWORD (Socket:: )(void*)' does not match 'DWORD (*)(void*)'|

Me estoy poniendo nervioso por lo cual decidi acudir a ustedes.
Gracias de antemano.


« Última modificación: 20 Junio 2013, 18:40 pm por bemone » En línea

Odio los tipos de variable de Windows.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [Ayuda] Hilos - basico
« Respuesta #1 en: 20 Junio 2013, 20:06 pm »

Sencillamente no puedes hacerlo, CreateThread espera una función global (las funciones miembro no son globales porque solo existen dentro de un objeto creado).

Lo mejor que puedes hacer es pasar una referencia a tu clase:

Código
  1. DWORD WINAPI ThreadFunc(LPVOID* paquete)
  2. {
  3.    paquete->RecibirOrdenes();
  4.    return 0;
  5. }
  6.  
  7. void Socket::SubProceso()
  8. {
  9.    DWORD dwThreadId;
  10.    CreateThread(NULL, 0, ThreadFunc,this, 0, &dwThreadId);
  11. }


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: [Ayuda] Hilos - basico
« Respuesta #2 en: 20 Junio 2013, 20:36 pm »

Sencillamente no puedes hacerlo, CreateThread espera una función global (las funciones miembro no son globales porque solo existen dentro de un objeto creado).

Lo mejor que puedes hacer es pasar una referencia a tu clase:

Código
  1. DWORD WINAPI ThreadFunc(LPVOID* paquete)
  2. {
  3.    paquete->RecibirOrdenes();
  4.    return 0;
  5. }
  6.  
  7. void Socket::SubProceso()
  8. {
  9.    DWORD dwThreadId;
  10.    CreateThread(NULL, 0, ThreadFunc,this, 0, &dwThreadId);
  11. }

recibirOrdenes devuelve un tipo int para saber cuando terminar de ejecutar la accion o no. Como lo harias en ese caso? si el parametro "paquete" lo pongo de tipo int no puedo acceder a recibirOrdenes() porque no es un puntero.
En línea

Odio los tipos de variable de Windows.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [Ayuda] Hilos - basico
« Respuesta #3 en: 20 Junio 2013, 20:39 pm »

Huy perdón se me olvido el casting:

Código
  1. DWORD WINAPI ThreadFunc(LPVOID* paquete)
  2. {
  3.   Socket* Parametro = (Socket*) paquete
  4.   Parametro->RecibirOrdenes();
  5.   return 0;
  6. }

Y para que se repita simplemente pones un while (Parametro->RecibirOrdenes() != Valor).
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: [Ayuda] Hilos - basico
« Respuesta #4 en: 20 Junio 2013, 20:55 pm »

Muchas gracias por tu ayuda, todo esto son conceptos nuevos para mi.
En línea

Odio los tipos de variable de Windows.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda en ejercicio basico
.NET (C#, VB.NET, ASP)
The_Saint 2 2,610 Último mensaje 16 Abril 2013, 20:27 pm
por The_Saint
Ayuda con ejercicio de Hebras/Hilos y semaforos
Programación C/C++
Lotux5 0 1,816 Último mensaje 26 Octubre 2013, 21:14 pm
por Lotux5
AYUDA: Practicando con hilos en Windows
Programación C/C++
t4r0x 1 1,841 Último mensaje 20 Febrero 2015, 15:13 pm
por _Enko
Ayuda con hilos en C « 1 2 »
Programación C/C++
snake_linux 14 5,803 Último mensaje 28 Agosto 2015, 00:06 am
por snake_linux
Ayuda con hilos en C
Programación C/C++
codX 3 3,095 Último mensaje 15 Febrero 2020, 18:40 pm
por RayR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines