Langat#
Johdanto#
Säikeet mahdollistavat robotin suorittaa useita tehtäviä samanaikaisesti saman ohjelman sisällä. Ne mahdollistavat moniajon, jolloin robotti voi suorittaa itsenäisiä toimintoja samanaikaisesti.
Huomautus: Sinun on ensin määriteltävä funktio käyttääksesi sitä säikeen kanssa.
Konstruktori – Luo ja aloita uusia säikeitä.
Thread– Käynnistää uuden säikeen, joka suorittaa määritetyn funktion rinnakkain pääohjelman kanssa.
Toiminto – Hallitse käynnissä olevia säikeitä.
stop– Pysäyttää säikeen manuaalisesti, hyödyllinen taustalla tapahtuvan toiminnan pysäyttämiseksi.
Rakentaja#
Thread#
Thread luo ja aloittaa säikeen. Kun luot säikeen, voit nimetä sen pysäyttääksesi sen, kun sitä ei enää tarvita.
Käyttö:
my_thread = Thread(my_function)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Uuden ketjun nimi. |
|
Aiemmin määritellyn function nimi. |
Note: A function must always be defined before it is called.
# Drive forward while blinking lights
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
blink_lights_thread = Thread(blink_lights)
robot.move_at(0)
# Run multiple threads simultaneously
# Turn right, blink lights and display heading at once
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
def display_heading():
while True:
robot.screen.clear_row()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
wait(50, MSEC)
blink_lights_thread = Thread(blink_lights)
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)
Toiminta#
stop#
stop pysäyttää säikeen manuaalisesti, mikä on hyödyllistä, kun tehtävää ei enää tarvita tai kun ohjelman on nollattava säikeet. Kun säie on pysäytetty, sitä ei voi käynnistää uudelleen. Suorittaaksesi sen uudelleen, sinun on luotava uusi säie käyttämällä Thread -funktiota.
Käyttö:
my_thread.stop()
Parametrit |
Kuvaus |
|---|---|
|
Aiemmin aloitettu säikeen objekti. Tämä on nimi, joka annettiin, kun säikeelle luotiin arvo |
"""
Run multiple threads simultaneously
Turn right, blink lights and display heading at once
Stop blinking lights after 2 seconds
"""
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
def display_heading():
while True:
robot.screen.clear_row()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
wait(50, MSEC)
blink_lights_thread = Thread(blink_lights)
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)
wait(2, SECONDS)
blink_lights_thread.stop()