1) ¿Cuál es la salida del siguiente programa?
import threading barrier = threading.Barrier(4) class thread(threading.Thread): def __init__(self, thread_ID, thread_name): threading.Thread.__init__(self) self.thread_ID = thread_ID self.thread_name = thread_name def run(self): print("ThreadID = " + str(self.thread_ID) + ", ThreadName = " + self.thread_name + "\n") try: barrier = threading.Barrier(4) barrier.wait() except: print("barrier broken") thread1 = thread(100, "GFG") thread2 = thread(101, "Geeks") thread3 = thread(102, "GeeksforGeeks") thread1.start() thread2.start() thread3.start() barrier.wait() print("Exit")
a) ThreadID = 100, ThreadName = GFG
ThreadID = 101, ThreadName = Geeks
ThreadID = 102, ThreadName = GeeksforGeeks
b) ThreadID = 100, ThreadName = GFG
ThreadID = 101, ThreadName = Geeks
ThreadID = 102, ThreadName = GeeksforGeeks
Salir
c) Compilación error
d) Error de tiempo de ejecución
Ans. (a)
Explicación: Este es un ejemplo de interbloqueo. Cada subproceso crea su propia barrera y llama a la función .wait() en esa barrera.
2) ¿Cuál de los siguientes NO es el resultado del siguiente programa?
import threading class thread(threading.Thread): def __init__(self, thread_ID, thread_name): threading.Thread.__init__(self) self.thread_ID = thread_ID self.thread_name = thread_name def run(self): print(self.thread_name) thread1 = thread(100, "GFG ") thread2 = thread(101, "Geeks ") thread3 = thread(102, "GeeksforGeeks ") thread1.start() thread2.start() thread3.start() print("Exit")
a) GFG Geeks GeeksforGeeks Exit
b) Exit Geeks GeeksforGeeks GFG
c) GFG Exit GeeksforGeeks Geeks
d) Ninguno de los anteriores
Ans. (d)
Explicación: Llamar al método start() en un subproceso mueve el subproceso al estado listo. Es responsabilidad del programador de subprocesos programar el subproceso. Por lo tanto, un hilo en particular se puede programar en cualquier instante.
3) ¿Cuál es la salida del siguiente programa?
import threading class thread(threading.Thread): def __init__(self, thread_ID, thread_name): threading.Thread.__init__(self) self.thread_ID = thread_ID self.thread_name = thread_name def run(self): print(self.thread_name) thread1 = thread(100, "GFG ") thread2 = thread(101, "Geeks ") thread3 = thread(102, "GeeksforGeeks ") thread = [] thread.append(thread1) thread.append(thread2) thread.append(thread3) thread1.start() thread2.start() for thread in thread: thread.join() thread3.start() print("Exit")
a) Salida de GFG Geeks GeeksforGeeks
b) Error de compilación
c) El programa se detendrá debido a un error de tiempo de ejecución
d) Ninguno de estos
Ans. (c)
Explicación: el método join() no se puede llamar en un subproceso que aún no ha comenzado su ejecución.
4) ¿Cuál es la salida del siguiente programa?
import threading i = 5 class thread(threading.Thread): def __init__(self, thread_ID, thread_name): threading.Thread.__init__(self) self.thread_ID = thread_ID self.thread_name = thread_name def run(self): i = i + 1 print(i) thread1 = thread(100, "GFG ") thread2 = thread(101, "Geeks") thread1.start() thread2.start()
a) 66
b) 67
c) Error de compilación
d) Error de ejecución
Ans. (d)
Explicación: Cada subproceso tiene su propio espacio reservado en la memoria. Entonces, para cada subproceso, subproceso1 y subproceso2, la variable temp no se declara ya que temp no está definida dentro del método de ejecución del subproceso.
5) ¿Cuál es la salida del siguiente programa?
import threading class thread(threading.Thread): def __init__(self, thread_ID): self.thread_ID = thread_ID def run(self): print(self.thread_ID) thread1 = thread(100) thread1.start()
a) 100
b) Error de compilación
c) Error de tiempo de ejecución
d) Ninguno de estos
Ans. (c)
Explicación: thread.__init__() debe ser llamado explícitamente por cada uno de los subprocesos que se crean dentro de la función __init__.
Este artículo es una contribución de Mayank Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA