Vītnes#

Ievads#

Pavedi ļauj robotam vienlaikus izpildīt vairākus uzdevumus vienas programmas ietvaros. Tie nodrošina vairākuzdevumu veikšanu, ļaujot robotam vienlaikus veikt neatkarīgas darbības.

Note: You must first define a function to use it with a thread.

Konstruktors — izveidojiet un sāciet jaunus pavedienus.

  • Thread pavediens — sāk jaunu pavedienu, kas paralēli galvenajai programmai palaiž norādīto funkciju.

Darbība — pārvaldīt darbojošos pavedienus.

  • stop – Manuāli aptur pavedienu, kas ir noderīgi fona darbību apturēšanai.

Konstruktors#

Thread#

Thread  pavediens izveido un sāk pavedienu. Izveidojot pavedienu, varat tam piešķirt nosaukumu, lai apturētu tā darbību, kad tas vairs nav nepieciešams.

Lietojums:

my_thread = Thread(my_function)

Parametri

Apraksts

my_thread

Neobligāti. Jaunā pavediena nosaukums.

my_function

Iepriekš definētas funkcijas nosaukums.

Note: A function must always be defined before it is called.

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

Darbība#

stop#

stop manuāli aptur pavedienu, kas ir noderīgi, ja uzdevums vairs nav nepieciešams vai ja programmai ir jāatiestata pavedieni. Kad pavediens ir apturēts, to nevar restartēt. Lai to palaistu vēlreiz, ir jāizveido jauns pavediens, izmantojot Thread.

Lietojums:

my_thread.stop()

Parametri

Apraksts

my_thread

Iepriekš sākts pavediena objekts. Šis ir nosaukums, kas tika piešķirts, kad pavediens tika izveidots, izmantojot 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()