Problemas con Variable por Referencia a un HILO

Iniciado por Skeletron, 18 Febrero 2010, 03:01 AM

0 Miembros y 2 Visitantes están viendo este tema.

elmaro

Cita de: MANULOMM 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

Sobre eso, aca tenes una info y te va a ahorrar bastantes dolores de cabeza

http://msdn.microsoft.com/es-es/library/3a86s51t%28VS.80%29.aspx

(Aunque todavia falta saber como pasar valores por referencia jeje)

Skeletron

Tio.. has dicho siempre lo mismo.
NINGUN HILO MAS INTENTARÁ ACCEDER A ESA VARIABLE!!!..

Porque me la haces repetir tantas veces MANULON? Y ya se utilizar el Sinklock.

Un Hilo, ejecutará OTRO HILO, y le pasará una variable.. éste hilo tiene que procesarla (reemplazarle unas letras por otras) y terminar. luego el otro sigue haciendo lo que quiere cone sa varible..

Porque sigues diciendo eso de INTERBLOQUEOS TIO?!?!?!?!?!?!!!!!!!!!!!!!!! Me pones los pelos de punta!!!! Ya lo has dicho 3 veces!!!.....

Sabes como pasar una variable por referencia? SI O NO?!

elmaro

Podes poner código mas completo y así puedo entender mas de que se trata. Estuve buscando y no encontré absolutamente nada. Lo mas parecido que encontré es usar variables globales(que creo que es lo que hay que hacer)

Saludos

Skeletron

Que ponga el codigo fuente?......................................................................................
Si tuviese el codigo fuente, ya estaria solucionado...

Todo el demas codigo que tengo en el proyecto, no tiene nada que ver.. y solamente los confundirá mas (y son mas de 700 lineas)....

No puede ser que no exista manera de pasar una variable por referencia...
Aunque, estuve pensando lo siguiente:
Si el hilo que voy a crear, en vez de ser un metodo, es una CLASE diferente, entonces, mediante metodos SET Y GET puedo cambiar ese valor. y utilizarlo como varible global para la propia clase del hilo...

Se entiende?

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

elmaro

Bueno espero tener tu solución.
Me puse a revisar el ThreadStart pero vi que no le podía pasar parámetros y vi el post de seba y.... ParameterizedThreadStart cha channn  ;-)

Código (vbnet) [Seleccionar]
Private Sub Iniciar()   
        Dim Var As Integer

        For i As Integer = 1 To 10
            Procesar(Var)
            ListBox1.Items.Add("Item " & Var)
        Next
End Sub

Private Sub Procesar(ByRef dato As Integer)
        Dim P As Thread
        Dim Clase As New C01

        P = New Thread(New ParameterizedThreadStart(AddressOf Clase.AAA))

        P.Start(dato)
        P.Join()
        dato = Clase.Dato

End Sub


Y acá la clase a la que le pasas el valor:

Código (vbnet) [Seleccionar]
Public Class C01

    Private _Dato As Integer

    Public Property Dato() As Integer
        Get
            Return _Dato
        End Get
        Set(ByVal value As Integer)
            _Dato = value
        End Set
    End Property

    Public Sub AAA(ByVal p As Integer)
        p += 1
        Dato = p
    End Sub

End Class


Quedaría adaptarlo, pero creo que esta bien.

Saludos!