Ruby | Métodos de clase de subprocesos-clase pública

En Ruby, los subprocesos se utilizan para implementar el módulo de programación concurrente. Los programas que requerían múltiples subprocesos, usan la clase Thread para crear subprocesos. La clase Thread contiene una amplia gama de métodos que realizan algunas tareas específicas.

Métodos de clase pública

  1. abort_on_exception : este método devuelve el estado de la condición global «abortar en caso de excepción». El valor predeterminado de este método es falso. Si el valor de este método se establece en verdadero, cancela todos los subprocesos en los que se genera una excepción.
    Thread.abort_on_exception -> true or false
  2. abort_on_exception= : este método devuelve el nuevo estado. Cuando el valor de este método se establece en verdadero, cancela los subprocesos en los que surge la excepción. El tipo de retorno de este método es booleano.
    Thread.abort_on_exception= bool -> true or false

    # Ruby program to illustrate 
    # abort_on_exception Method
      
    Thread.abort_on_exception = true
      
    x = Thread.new do
      
    puts "Welcome to new thread"
    raise "Exception is raised in thread"
    end
      
    sleep(0.5)
    puts "Not Found"

    Producción:

    Welcome to new thread
    test.rb:9: Exception is raised in thread (RuntimeError)
            from test.rb:6:in `initialize'
            from test.rb:6:in `new'
            from test.rb:6
    
  3. Critical : este método devuelve la condición global de «subproceso crítico».
    Thread.critical -> true or false
  4. Critical= : este método se utiliza para establecer el estado de «subproceso crítico» global y devolverlo. Cuando el valor de este método se establece en verdadero, entonces prohíbe la programación de cualquier subproceso existente y no bloquea la creación y ejecución del nuevo subproceso. Algunas operaciones de subprocesos, como matar o detener un subproceso, dormir en el subproceso actual o generar una excepción, pueden hacer que un subproceso se programe en una sección crítica. Este método admite principalmente a las personas que escriben bibliotecas de subprocesos. El tipo de retorno de este método es booleano.
    Thread.critical= bool -> true or false
  5. current : este método devuelve la ejecución actual del hilo.
    Thread.current -> thread
  6. exit : este método se utiliza para finalizar los subprocesos que se están ejecutando actualmente y programar la ejecución de otro subproceso. Si este subproceso está marcado para ser eliminado, entonces devuelve el subproceso y si este es el subproceso principal o el último subproceso, sale del proceso.
    Thread.exit
  7. bifurcación : este método es similar al método de inicio.
    Thread.fork{block} -> thread
  8. kill : este método se utiliza para salir del hilo.
    Thread.kill(thread)

    Ejemplo:

    # Ruby program to illustrate 
    # kill Method
      
    counter = 0
      
    # creating new thread
    x = Thread.new { loop { counter += 1 } }
      
    # using sleep method
    sleep(0.4)           
      
    # exits the thread using kill method
    Thread.kill(x)    
      
    # give it time to die!
    sleep(0.5)
      
    # return false
    x.alive?       

    Producción:

    false
    
  9. list: este método devuelve una array de objetos de subprocesos para todos los subprocesos ejecutables o detenidos.
    Thread.list -> array

    Ejemplo:

    # Ruby program to illustrate 
    # list Method
      
    # first thread
    Thread.new { sleep(100) }
      
    # second thread
    Thread.new { 10000.times {|z| z*z } }
      
    # third thread
    Thread.new { Thread.stop }
      
    # using list method
    Thread.list.each {|thr| p thr }

    Producción:

    #<Thread:0x8795838 sleep>
    #<Thread:0x87958e0 run>
    #<Thread:0x8795958 sleep>
    #<Thread:0x87a4f10 run>
    
  10. main : este método devuelve el hilo principal del proceso. El programa siempre devolverá identificaciones diferentes para cada ejecución.
    Thread.main -> thread

    # Ruby program to print the id 
    # of main thread
       
    # using the main method
    puts Thread.main      

    Producción:

    #<Thread:0xbf04f18>
  11. nuevo : este método se usa para crear y ejecutar un nuevo hilo para ejecutar la instrucción dada en el bloque. Cualquier argumento pasado a este método se pasa en el bloque.
    Thread.new([arguments]*){|arguments|block} -> thread
  12. pass : este método intenta pasar la ejecución a otro subproceso, pero el cambio de la ejecución depende del sistema operativo.
    Thread.pass
  13. start : Este método es similar al nuevo método. Si la clase Thread es una subclase, llamar a start from subclass no invocará el método de inicialización de la subclase.
    Thread.start([arguments]*){|arguments|block} -> thread
  14. stop : este método se utiliza para detener la ejecución del subproceso en ejecución actual al ponerlo en suspensión y programar la ejecución de otro subproceso, restablecer la condición crítica a falso.
    Thread.stop

    Ejemplo:

    # Ruby program to illustrate 
    # stop Method
      
    x = Thread.new { print "geeks"; Thread.stop; print "geeksforgeeks" }
      
    # using pass method
    Thread.pass
      
    print "geeksforgeeks"
      
    x.run
    x.join

    Producción:

    geeksgeeksforgeeksgeeksforgeeks
  15. Referencia: https://ruby-doc.org/core-2.5.0/Thread.html#class

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *