Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), трейти Send & Sync, thread safety

20 питань зі співбесід·
Mid-Level
1

Яку функцію слід використовувати для створення нового thread у Rust?

Відповідь

Функція thread::spawn з модуля std::thread створює новий потік виконання. Вона приймає замикання як параметр і повертає JoinHandle, що дозволяє очікувати завершення потоку методом join(). Ця функція є основною точкою входу для конкурентного програмування на основі потоків у Rust.

2

Що повертає метод join(), викликаний на JoinHandle?

Відповідь

Метод join() повертає Result<T, E>, де T — це тип повернення замикання потоку. Якщо потік завершується нормально, ви отримуєте Ok(значення). Якщо потік запанікував, ви отримуєте Err із інформацією про паніку. Це дозволяє безпечно отримувати результати потоку або обробляти його помилки.

3

Навіщо використовувати ключове слово move із замиканням, що передається в thread::spawn?

Відповідь

Ключове слово move змушує замикання взяти ownership захоплених змінних замість їх запозичення. Це необхідно з thread::spawn, оскільки новий потік може жити довше, ніж область, де визначені змінні. Без move компілятор відмовляє, бо не може гарантувати, що посилання будуть дійсними протягом усього часу життя потоку.

4

Яка роль трейта Send у Rust?

5

Яка роль трейта Sync у Rust?

+17 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно