Wątki#

Wstęp#

Wątki pozwalają kontrolerowi drona VEX AIR na jednoczesne wykonywanie wielu zadań w ramach tego samego programu. Umożliwiają one wielozadaniowość, pozwalając dronowi VEX AIR wykonywać niezależne czynności w tym samym czasie.

Uwaga: Aby używać funkcji z wątkiem, należy ją najpierw zdefiniować.

Konstruktor – tworzenie i uruchamianie nowych wątków.

  • Thread – Rozpoczyna nowy wątek, który uruchamia określoną funkcję równolegle z programem głównym.

Konstruktor#

Thread#

Thread tworzy i uruchamia wątek. Podczas tworzenia wątku możesz nadać mu nazwę, aby zatrzymać go, gdy nie będzie już potrzebny.

Stosowanie:

my_thread = Thread(my_function)

Parametry

Opis

my_thread

Opcjonalnie. Nazwa nowego wątku.

callback

Nazwa wcześniej zdefiniowanej funkcji.

Uwaga: Funkcja musi zawsze zostać zdefiniowana przed jej wywołaniem.

# Only play sounds when the drone moves laterally
def moving_sounds():
    while True:
        if drone.is_move_active():
            controller.sound.play(LOOPING)
            while controller.sound.is_active():
                wait(50, MSEC)
        wait(5, MSEC)

# Run moving_sounds at the same time
moving_sounds_thread = Thread(moving_sounds)

# Fly the drone using the controller
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)