Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] [Threads en Windows] El thread no me modifica una cadena de chars

Estas en el tema de [Threads en Windows] El thread no me modifica una cadena de chars en el foro de C/C++ en Foros del Web. Hola! Mi problema es el siguiente: Quiero que mi thread me modifique una cadena de chars que tengo declarada al inicio del .cpp, así de ...
  #1 (permalink)  
Antiguo 04/08/2014, 02:56
 
Fecha de Ingreso: junio-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
[Threads en Windows] El thread no me modifica una cadena de chars

Hola!
Mi problema es el siguiente:
Quiero que mi thread me modifique una cadena de chars que tengo declarada al inicio del .cpp, así de simple.
Pero cuando lo hago, dentro del char se modifica, pero luego cuando la printo por pantalla en el programa principal (fuera del thread) la variable esta como inicialmente.
En mi opinión, creo que tiene algo que ver con que el thread duplica los recursos (variables) para utilizarlos como variables locales y que no afecten al programa principal.

Os dejo aqui el codigo:
Cita:
#include <thread>
using namespace std;

char *ip;

DWORD WINAPI Function(param_accept param){
ip = param.buffer;
printf("Ip: %s",ip); // Me lo printa bien

return 0;
}

int main(){
thread aux;

.....

aux = thread(Function,ref(param)); // Param es una struct con un buffer lleno (para no poneros todo el codigo aqui...)

Sleep(5000); // Le doy tiempo de sobras para que modifique el valor

printf("Ip final: %s", ip); // Y EL VALOR ES EL INICIAL!!!! NO SE MODIFICA!!!
}
  #2 (permalink)  
Antiguo 04/08/2014, 08:32
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: [Threads en Windows] El thread no me modifica una cadena de chars

En C++ las estructuras se pasan por valor (copia) en los parámetros, así que tienes un param original fuera y un param copia dentro de la función. Deberías pasar un puntero a param.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 04/08/2014 a las 08:48
  #3 (permalink)  
Antiguo 05/08/2014, 04:01
 
Fecha de Ingreso: junio-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: [Threads en Windows] El thread no me modifica una cadena de chars

Solucionado!

Canviando la declaración de la ip a esta manera:
Cita:
char ip[30];
Y luego dandole la ip de esta manera:
Cita:
strcpy_s(ip,param.buffer);
Al final me lo printa bien.
Gracias de todas formas chuidiang ;))

Etiquetas: threads, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:00.