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

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