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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problemas con Variable por Referencia a un HILO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con Variable por Referencia a un HILO  (Leído 12,597 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Problemas con Variable por Referencia a un HILO
« en: 18 Febrero 2010, 03:01 am »

Hola gente... estoy teniendo problemas para pasar por referencia, una variable a un thread..
Esto es posible?? porque veo que al construir un nuevo hilo, solamente puedo poner un ByVal x as XXXX como parametros...

El tema, es que necesito descargar una cadena, de manera asincronica.. con un web client... del modo:
dim p as new webcient
p.downloadstringasync(ACA EL URI)
Eso me descarga perfectamente el codigo fuente de una web si le paso un link.. pero, para tomar el codigo, tengo que tomarlo desde el evento downloadstrngasynccompleted... y estoy trabajando con HILOS.. cada hilo tiene su weblcient.. así que no tengo idea de como tomar ese evento...
Por lo que, me propuse que, el hilo, a la hora de descargar ese codigo fuente, cree un hilo, y le mando un link y una variable para que guarde en la variable, el codigo juente descargado NO ASINCRONICAMENTE del link que le pasé.....
Pero... no puedo.. porque esa variable, donde tiene que estar el codigo fuente, no puedo pasarle la referencia para que le meta el codigo... me entienden???

Un hilo, crearía otro HILO..
El 1º hilo, ejecuta el 2º, que lo que hará el 2º, es guardar en la variable CODIGO, el codigo fuente descargado de manera NO ASINCRONICA...
Pero al no poderle pasar la cariable CODIGO al 2º hilo.. no puedo hacer todo ésto....


Alguien tiene una solucion?


En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #1 en: 18 Febrero 2010, 04:49 am »

por ser una variable por referencia es muy factible que dos hilos intentasen acceder al mismo tiempo al mismo campo de memoria, mira el tema de interbloqueos.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


En línea


Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #2 en: 18 Febrero 2010, 04:52 am »

WTF?
Tio... las leido lo que puse? o simplemente leiste el titulo y formulaste una supuesta respuesta?


Reformulo la respuesta:
Como hago para pasarle una variable por referencia a un hilo? (en realidad, necesito pasar una por referencia y otra sin referencia)
En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #3 en: 18 Febrero 2010, 22:09 pm »

haber, muestrame un poco de tu fuente.

Con lo de interbloqueos me referia a que cuandos dos o mas hilos intentan acceder a la misma porcion de memoria chocan, hay algunas tecnicas para evitar que esto pase pues la aplicacion se bloquearia.


Atentamente,

Juan Manuel Lombana
Medellín - Colombia
En línea


Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #4 en: 18 Febrero 2010, 22:22 pm »

dim p as new thread(address of Descarga)
p.start(LINK, CODIGO)


public sub Descarga(byref link as String, byref codigo as String)

end sub


Todo eso, da error en el .START... porque no se puede enviar una varible por referencia...
Sabes como se puede hacer para enviar variables por referencias a hilos?
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #5 en: 19 Febrero 2010, 04:47 am »

Para hacerlo sencillo puedes declarar 2 variables globales
Código
  1. LINK ="URL"
  2. CODIGO = "CODE"
  3.  

las cuales actualizas antes antes de

Código
  1. dim p as new thread(address of Descarga)
  2. p.start()
y las utilizas dentro de
Código
  1. sub Descarga()
  2. LINK
  3. CODIGO
  4. end sub

En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #6 en: 19 Febrero 2010, 15:08 pm »

dim p as new thread(address of Descarga)
p.start(LINK, CODIGO)


public sub Descarga(byref link as String, byref codigo as String)

end sub


Todo eso, da error en el .START... porque no se puede enviar una varible por referencia...
Sabes como se puede hacer para enviar variables por referencias a hilos?

Claro, si quieres pasar parametros asi solo puedes pasar uno solo. Es como en el BackGroundWorker:

Código
  1. BackgroundWorker1.RunWorkerAsync(Parametro)

Como es del tipo Object puedes mandar un Array con los datos que necesites

Código
  1. Dim P As New Threading.Thread(AddressOf Descarga)
  2. P.Start("")

Código
  1. Sub Descarga(ByVal p As Object)
  2.  
  3. End Sub

En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #7 en: 19 Febrero 2010, 17:34 pm »

Para hacerlo sencillo puedes declarar 2 variables globales
Código
  1. LINK ="URL"
  2. CODIGO = "CODE"
  3.  

las cuales actualizas antes antes de

Código
  1. dim p as new thread(address of Descarga)
  2. p.start()
y las utilizas dentro de
Código
  1. sub Descarga()
  2. LINK
  3. CODIGO
  4. end sub


No puedo hacer eso, porque en realidad tengo muchos hilos, y a cada uno le tengo que pasar un dato especial. Y la cantidad de hilos es dinamica, así que tampoco podria crear muchas variables globales.


dim p as new thread(address of Descarga)
p.start(LINK, CODIGO)


public sub Descarga(byref link as String, byref codigo as String)

end sub


Todo eso, da error en el .START... porque no se puede enviar una varible por referencia...
Sabes como se puede hacer para enviar variables por referencias a hilos?

Claro, si quieres pasar parametros asi solo puedes pasar uno solo. Es como en el BackGroundWorker:

Código
  1. BackgroundWorker1.RunWorkerAsync(Parametro)

Como es del tipo Object puedes mandar un Array con los datos que necesites

Código
  1. Dim P As New Threading.Thread(AddressOf Descarga)
  2. P.Start("")

Código
  1. Sub Descarga(ByVal p As Object)
  2.  
  3. End Sub


Pero tio, ese valor qu estas pasando NO es por referencia... es una valor comun.. o sea.. como veras, tu "sub Descaga" posee la variable P, que es ByVal... y tiene que er ByRef
En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #8 en: 19 Febrero 2010, 19:05 pm »

Tienes razón. Pero como vi el código ese que tenia mal la sintaxis pensé que así te serviría.
Voy a ver si se me ocurre algo.

Saludos
En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Problemas con Variable por Referencia a un HILO
« Respuesta #9 en: 19 Febrero 2010, 20:28 pm »

Que va ha pasar cuando Dos o mas hilos intenten acceder a la misma porcion de memoria (la misma referencia)?

Simplemente se pelearan por el recurso y la aplicacion morira...

Si fuese una variable global o estatica pasaria lo mismo.

busca sobre los interbloqueos en hilos.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
En línea


Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con variable de referencia
Java
тαптяα 4 2,334 Último mensaje 5 Octubre 2011, 19:32 pm
por тαптяα
Referencia de variable y objeto tras ingresarse como argumento
Java
Fabi0lo 2 2,664 Último mensaje 3 Abril 2012, 15:32 pm
por Fabi0lo
Tengo problemas recogiendo variable spor metodo url
PHP
Pirat3net 6 2,621 Último mensaje 30 Noviembre 2012, 02:40 am
por 2Fac3R
Problemas pasando por referencia un char...
Programación C/C++
jomoza 1 1,886 Último mensaje 20 Diciembre 2014, 22:47 pm
por ivancea96
como referencia el codigo ensamblador a una variable (local) en memoria?
Programación General
MRx86 4 3,265 Último mensaje 22 Mayo 2017, 23:50 pm
por MRx86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines