Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), traity Send & Sync, thread safety

20 pytań z rozmów·
Mid-Level
1

Której funkcji należy użyć, aby utworzyć nowy thread w Rust?

Odpowiedź

Funkcja thread::spawn z modułu std::thread tworzy nowy wątek wykonania. Przyjmuje closure jako parametr i zwraca JoinHandle, który pozwala czekać na zakończenie wątku za pomocą metody join(). Ta funkcja jest głównym punktem wejścia do programowania współbieżnego opartego na wątkach w Rust.

2

Co zwraca metoda join() wywołana na JoinHandle?

Odpowiedź

Metoda join() zwraca Result<T, E>, gdzie T jest typem zwracanym przez closure wątku. Jeśli wątek zakończy się normalnie, otrzymujemy Ok(wartość). Jeśli wątek wpadł w panic, otrzymujemy Err zawierający informacje o panic. Pozwala to bezpiecznie odzyskać wyniki wątku lub obsłużyć jego błędy.

3

Dlaczego używa się słowa kluczowego move w closure przekazywanej do thread::spawn?

Odpowiedź

Słowo kluczowe move zmusza closure do przejęcia ownership przechwyconych zmiennych zamiast ich pożyczania. Jest to istotne przy thread::spawn, ponieważ nowy wątek może żyć dłużej niż zakres, w którym zdefiniowano zmienne. Bez move kompilator odmawia, ponieważ nie może zagwarantować, że referencje będą prawidłowe przez cały czas życia wątku.

4

Jaka jest rola traita Send w Rust?

5

Jaka jest rola traita Sync w Rust?

+17 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo