Trådar#

Introduktion#

Trådar gör det möjligt för en robot att köra flera uppgifter samtidigt inom samma program. De möjliggör multitasking, vilket gör att roboten kan utföra oberoende åtgärder samtidigt.

Obs: Du måste först definiera en funktion för att kunna använda den med en tråd.

Konstruktör – Skapa och starta nya trådar.

  • Thread – Startar en ny tråd som kör den angivna funktionen parallellt med huvudprogrammet.

Åtgärd – Kontrollera pågående trådar.

  • stop – Stoppar en tråd manuellt, användbart för att stoppa bakgrundsbeteende.

Konstruktör#

Thread#

Thread skapar och startar en tråd. När du skapar en tråd kan du namnge den för att stoppa den när den inte längre behövs.

Användande:

my_thread = Thread(my_function)

Parametrar

Beskrivning

my_thread

Valfritt. Ett namn för den nya tråden.

my_function

Namnet på en tidigare definierad funktion.

Obs: En funktion måste alltid definieras innan den anropas.

# 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)

Handling#

stop#

stop stoppar en tråd manuellt, vilket är användbart när en uppgift inte längre behövs eller när ett program behöver återställa trådar. När en tråd har stoppats kan den inte startas om. För att köra den igen måste du skapa en ny tråd med Tråd.

Användande:

my_thread.stop()

Parametrar

Beskrivning

my_thread

Ett tidigare startat trådobjekt. Detta är namnet som tilldelades när tråden skapades med hjälp av Thread.

"""
Run multiple threads simultaneously
Turn right, play a sound and display heading at once
Stop playing sounds after 2 seconds
"""
def lights():
    while True:
        optical_sensor.set_light(LEDStateType.ON)
        wait(0.5, SECONDS)
        optical_sensor.set_light(LEDStateType.OFF)
        wait(0.5, SECONDS)

def display_heading():
    while True:
        brain.screen.clear_row()
        brain.screen.set_cursor(1, 1)
        brain.screen.print("Heading: {}".format(drivetrain.heading(DEGREES)))
        wait(50, MSEC)

lights_thread = Thread(lights)     
display_heading_thread = Thread(display_heading)
drivetrain.turn(RIGHT)

wait(2, SECONDS)
lights_thread.stop()