Benang#

Perkenalan#

Thread memungkinkan robot untuk menjalankan banyak tugas secara bersamaan dalam program yang sama. Ini memungkinkan multitasking, sehingga robot dapat melakukan tindakan independen pada waktu yang bersamaan.

Catatan: Anda harus mendefinisikan fungsi terlebih dahulu untuk menggunakannya dengan thread.

Konstruktor – Membuat dan memulai thread baru.

  • Thread – Memulai thread baru yang menjalankan fungsi yang ditentukan secara paralel dengan program utama.

Aksi – Mengontrol thread yang sedang berjalan.

  • stop – Menghentikan thread secara manual, berguna untuk menghentikan perilaku latar belakang.

Konstruktor#

Thread#

Thread membuat dan memulai sebuah thread. Saat Anda membuat sebuah thread, Anda dapat memberinya nama untuk menghentikannya ketika tidak lagi dibutuhkan.

Penggunaan:

my_thread = Thread(my_function)

Parameter

Keterangan

my_thread

Opsional. Nama untuk thread baru.

my_function

Nama dari fungsi yang telah didefinisikan sebelumnya.

Catatan: Suatu fungsi harus *selalu didefinisikan sebelum dipanggil.

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

Tindakan#

stop#

stop menghentikan thread secara manual, yang berguna ketika suatu tugas tidak lagi diperlukan atau ketika suatu program perlu mengatur ulang thread. Setelah thread dihentikan, thread tersebut tidak dapat dimulai ulang. Untuk menjalankannya lagi, Anda harus membuat thread baru menggunakan Thread.

Penggunaan:

my_thread.stop()

Parameter

Keterangan

my_thread

Objek thread yang sebelumnya telah dimulai. Ini adalah nama yang diberikan saat thread dibuat menggunakan Thread.

"""
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()