Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[.NET] VB.NET uso de hilos

Participa en el tema [.NET] VB.NET uso de hilos en el foro Programación.
Bueno, esto es una duda que quiero que me responda solamente los que trabajaron con ...

Buscar en este tema:
 
  •  
    #1 [.NET] VB.NET uso de hilos
    Bueno, esto es una duda que quiero que me responda solamente los que trabajaron con threads en vb.net, osea no me sirven las "SUPOSICIONES"...

    Mi pregunta puntual es...

    Supongamos que inicio un hilo llamando a un subproceso... obviamente la aplicacion continua su curso normal mientras se ejecuta el hilo... Pero... Si el subproceso del hilo llama a otro subproceso o funcion (que no es un hilo, sino lo llama) todo esto pertenece al hilo?...

    Ejemplo... Tengo estos subprocesos
    SUMAR
    RESTAR
    DIVIDIR
    y estas funciones
    EXISTE
    CANTIDAD

    Supongamos que estoy realizando un proceso y llamo al hilo para que en paralelo ejecute algo mientras sigue la ejecucion normal...
    El hilo llama a SUMAR.... termina sumar y continua el hilo... despues llama a la funcion EXISTE y luego continua el hilo...
    Pero a la par, el proceso PADRE pudo haber llamado a SUMAR y a EXISTE (simultaneamente, mientras que el hilo llamo tambien a los mismos procesos)...

    A lo que voy es, por un lado tengo el proceso padre, que llama a las funciones y subprocesos, y por otro lado tengo muchos procesos hijos (hilos) que tambien hacen uso de esas funciones y subprocesos que usan el proceso padre... Todo esto sale en paralelo? o en algun momento espera algun proceso a liberarse su uso?.
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: VB.NET uso de hilos

    Originalmente publicado por El-Pastor NEW Ver mensaje
    Bueno, esto es una duda que quiero que me responda solamente los que trabajaron con threads en vb.net, osea no me sirven las "SUPOSICIONES"...
    Tu pregunta es básica de threads, no específica a VB.NET. Pero si te sentís calificado para rechazar respuestas sobre un tema que no dominás, ignorá esta respuesta: no trabajé con threads en VB.NET.

    Originalmente publicado por El-Pastor NEW Ver mensaje
    A lo que voy es, por un lado tengo el proceso padre, que llama a las funciones y subprocesos, y por otro lado tengo muchos procesos hijos (hilos) que tambien hacen uso de esas funciones y subprocesos que usan el proceso padre... Todo esto sale en paralelo? o en algun momento espera algun proceso a liberarse su uso?.
    Todo es en paralelo, de eso se trata, justamente. Para que una sección de código se ejecute de forma secuencial se deben usar locks (en VB.NET se hace con la instrucción SyncLock). En ese caso, los hilos se quedan esperando a la entrada de la sección protegida a que salga el hilo que la está ejecutando en ese momento.
    Me gusta este mensaje
  • #3 Re: VB.NET uso de hilos

    Originalmente publicado por pangus Ver mensaje
    Tu pregunta es básica de threads, no específica a VB.NET. Pero si te sentís calificado para rechazar respuestas sobre un tema que no dominás, ignorá esta respuesta: no trabajé con threads en VB.NET.
    Mi pregunta no es basica de thread mi pregunta va enfocada a vb.net, si vos trabajaste con threads en java a mi no me interesa como funciona en java, quiero saber si vb.net respeta el standar de hilos ya que encontre un par de clases para diferentes manejos de hilo (en .net)

    Originalmente publicado por pangus Ver mensaje
    Todo es en paralelo, de eso se trata, justamente. Para que una sección de código se ejecute de forma secuencial se deben usar locks (en VB.NET se hace con la instrucción SyncLock). En ese caso, los hilos se quedan esperando a la entrada de la sección protegida a que salga el hilo que la está ejecutando en ese momento.
    mmm creo que no respondiste a mi pregunta, o no me exprese bien, o no te interprete bien.

    Voy con un ejemplo BRUTO, nada que ver pero solo simbolizando que al llamar a HILO ya creo el thread

    Código:
    Public Sub main ( )
        Call SUMA 'a los 100 milisegundos hace esto
        Call HILO 'aca llama al hilo y paralelamente empieza a ejecutarse
        Call Resta 'esto hace a los 300 milisegundos
    End Sub 
    
    Public Sub HILO ( )
        Call SUMA 'a los 300 milisegundos (concuerda con el tiempo exacto en que el main llama a resta...
        Call Resta 'a los 400 milisegundos
    End Sub
    
    A lo que voy yo, es que el proceso HILO que obviamente es un hilo en ejecucion, por ahi llama a otro proceso o funcion que de por si no es un hilo... Eso se ejecuta en simultaneo con el proceso padre.. (puede que el proceso padre llame justamente al mismo tiempo al mismo subproceso que esta llamando el hilo)...

    O en vb.net al no ser un proceso hilo (el que llamo el hilo) espera hasta terminar el proceso padre... y ahi retoma en ese proceso que no es un hilo
    Editado por El-Pastor NEW - 12.06.2008 12:46 hs.
    Me gusta este mensaje
  • #4 Re: VB.NET uso de hilos

    Entra a www.jcsystem.info, en esta pagina puedes encontrar un ejemplo sencillo de Hilos, en visual basic .net mediante puertos paralelos.
    El video que habla sobre esto; es el numero (3. Recepcion de datos Puerto Serial)


    Pero para que entiendas mejor la idea descarga los dos que estan antes
    Saludos
    Me gusta este mensaje
  • #5 Re: VB.NET uso de hilos

    OK, permitime que cambie tu VB a pseudo-BASIC-código, para crear un thread explícitamente (la sintaxis seguro que está mal, pero se entiende):
    Código:
    sub Main ()
      hilo = new Thread(HILO)    ' creo una thread que cuando empiece va a ejecutar la función HILO
      Call SUMA  ' 1
      hilo.Start  ' 2
      Call Resta  ' 3
    End Sub
    
    Sub HILO ()
      Call Suma  ' 4
      Call Resta  ' 5
    End Sub
    
    Teniendo esto, el orden de ejecución es: primero 1, después 2. A partir de ahí, lo único que se puede asegurar es que 4 viene antes de 5, pero si 3 y 4 (o 3 y 5) se ejecutan al mismo tiempo, o uno antes de otro, o cómo sea, no está garantizado. El sistema puede organizar los tiempos como le parezca, y tampoco está definido si va a terminar primero Main() o HILO().

    No hay diferencia entre HILO y SUMA, no es que uno esté dentro de un hilo y el otro no. El que crea el hilo es el objeto Thread, cuando llamás a thread.start el hilo arranca y llama a la función. Lógicamente, todo el código de la función corre dentro del hilo creado, incluso llamadas a otras funciones. Cuando la función termina, el objeto Thread para el hilo... pero la función no tiene nada que ver en esto. Le da lo mismo si es llamada desde el thread principal (Main) o desde uno creado por el usuario.

    Por ejemplo:
    Código:
    Sub Pepe()
      t = new Thread(XXX)
      t.start()
      Call XXX
    End Sub
    
    Sub XXX()
      PRINT "Hola"
      PRINT "Chau"
    End Sub
    
    Este código puede emitir: Hola Hola Chau Chau, o Hola Chau Hola Chau, depende de cómo le entren los hilos.

    Espero haber respondido la pregunta esta vez...

    Saludos.
    Me gusta este mensaje
  • #6 Re: VB.NET uso de hilos

    Originalmente publicado por pangus Ver mensaje
    OK, permitime que cambie tu VB a pseudo-BASIC-código, para crear un thread explícitamente (la sintaxis seguro que está mal, pero se entiende):
    Código:
    sub Main ()
      hilo = new Thread(HILO)    ' creo una thread que cuando empiece va a ejecutar la función HILO
      Call SUMA  ' 1
      hilo.Start  ' 2
      Call Resta  ' 3
    End Sub
    
    Sub HILO ()
      Call Suma  ' 4
      Call Resta  ' 5
    End Sub
    
    Teniendo esto, el orden de ejecución es: primero 1, después 2. A partir de ahí, lo único que se puede asegurar es que 4 viene antes de 5, pero si 3 y 4 (o 3 y 5) se ejecutan al mismo tiempo, o uno antes de otro, o cómo sea, no está garantizado. El sistema puede organizar los tiempos como le parezca, y tampoco está definido si va a terminar primero Main() o HILO().

    No hay diferencia entre HILO y SUMA, no es que uno esté dentro de un hilo y el otro no. El que crea el hilo es el objeto Thread, cuando llamás a thread.start el hilo arranca y llama a la función. Lógicamente, todo el código de la función corre dentro del hilo creado, incluso llamadas a otras funciones. Cuando la función termina, el objeto Thread para el hilo... pero la función no tiene nada que ver en esto. Le da lo mismo si es llamada desde el thread principal (Main) o desde uno creado por el usuario.

    Por ejemplo:
    Código:
    Sub Pepe()
      t = new Thread(XXX)
      t.start()
      Call XXX
    End Sub
    
    Sub XXX()
      PRINT "Hola"
      PRINT "Chau"
    End Sub
    
    Este código puede emitir: Hola Hola Chau Chau, o Hola Chau Hola Chau, depende de cómo le entren los hilos.

    Espero haber respondido la pregunta esta vez...

    Saludos.
    Ahora si, ejeje llegamos a lo mismo...

    Ahora bien, que pasa si el hilo llama a un subproceso y este subproceso llama otro proceso y asi hasta que retoma le hilo... Es lo mismo no?
    Me gusta este mensaje
  • #7 Re: VB.NET uso de hilos

    Originalmente publicado por El-Pastor NEW Ver mensaje
    Ahora si, ejeje llegamos a lo mismo...

    Ahora bien, que pasa si el hilo llama a un subproceso y este subproceso llama otro proceso y asi hasta que retoma le hilo... Es lo mismo no?
    Si entendí bien lo que dijiste (me atajo ), no hay diferencia.
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 6 RESPUESTAS
  • 4837 VISTAS
  • 3 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB