Fios#
Introdução#
Os threads permitem que um robô execute várias tarefas em simultâneo dentro do mesmo programa. Possibilitam a multitarefa, permitindo que o robô execute ações independentes ao mesmo tempo.
Nota: Deve primeiro definir uma função para a utilizar com um thread.
Construtor — Cria e inicia novos threads.
Thread— Inicia uma nova thread que executa a função especificada em paralelo com o programa principal.
Ação — Controlar threads em execução.
stop— Interrompe um thread manualmente, útil para interromper o comportamento em segundo plano.
Construtor#
Thread#
Thread cria e inicia uma thread. Ao criar uma thread, pode nomeá-la para a interromper quando já não for necessária.
Utilização:
my_thread = Thread(my_function)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Um nome para o novo tópico. |
|
O nome de uma função previamente definida. |
Nota: Uma função deve ser sempre definida antes de ser chamada.
# Drive forward while blinking screen
def blink_screen():
while True:
brain.screen.clear_screen(Color.RED)
wait(0.5, SECONDS)
brain.screen.clear_screen()
wait(0.5, SECONDS)
blink_screen_thread = Thread(blink_screen)
drivetrain.drive(FORWARD)
# Run multiple threads simultaneously
# Turn right, blink screen at once
def blink_screen():
while True:
brain.screen.clear_screen(Color.RED)
wait(0.5, SECONDS)
brain.screen.clear_screen()
wait(0.5, SECONDS)
def turning():
drivetrain.turn(RIGHT)
blink_screen_thread = Thread(blink_screen)
turning_thread = Thread(turning)
Ação#
stop#
stop pára um thread manualmente, o que é útil quando uma tarefa já não é necessária ou quando um programa necessita de reiniciar threads. Uma vez que uma thread é interrompida, não pode ser reiniciada. Para a executar novamente, deve criar uma nova thread utilizando Thread.
Utilização:
my_thread.stop()
Parâmetros |
Descrição |
|---|---|
|
Um objeto de thread previamente iniciado. Este é o nome atribuído quando o thread foi criado utilizando |
"""
Run multiple threads simultaneously
Turn right, play a sound and display heading at once
Stop playing sounds after 2 seconds
"""
def sound():
while True:
brain.play_sound(SoundType.ALARM)
wait(0.5, SECONDS)
def display_heading():
while True:
brain.screen.clear_row()
brain.screen.set_cursor(1, 1)
brain.screen.print("Heading: {}".format(brain_inertial.orientation(YAW)))
wait(50, MSEC)
sound_thread = Thread(sound)
display_heading_thread = Thread(display_heading)
drivetrain.turn(RIGHT)
wait(2, SECONDS)
sound_thread.stop()