Общие термины Flashcards
Mutex
Mutual exclusion
Взаимное исключение
В параллельном программировании
Смарт-указатель
Указатель, которому не нужен unsafe-контекст
Где находится смарт-указатель Mutex?
std::sync
Какой метод предоставляется для управлением Mutex?
lock()
Что делает lock() у Mutex
Когда поток получает блокировку при помощи lock(), это гарантирует, что никакие другие потоки не смогут одновременно изменять или получать доступ к защищенным данным
Этот механизм необходим для предотвращения гонок за данными и обеспечения упорядоченного выполнения параллельного кода
unwrap
Если в Result находится Ok, то возвращается объект
Если находится Err, то вызывается panic!
expect
Работает аналогично unwrap, только здесь мы можем указать сообщение для panic
unwrap_or_else
Аналогично unwrap, только здесь мы можем указать свою собственную реализацию для Err
let tom = create_person(“Tom”, 136).unwrap_or_else(|error| {
panic!("Возникла проблема: {}", error) });
Может ли Mutex автоматически разблокироваться?
Да, например, в следующем коде
{
let mut guard = data.lock().unwrap();
*guard *= 2;
}
… в конце произойдет автоматическая разблокировка
*var
Разыменовывание
Мы можем обратиться не посредственно к данным
Tuple
Кортеж
Как определяется кортеж
Кортеж определяется в круглых скобках
В чем смысл кортежа
Под одним именем хранить данные разных типов
Как обратиться к первому элементу кортежа?
<имя>.<индекс>
</индекс></имя>
Объявите матрицу
let matrix: [[<type>; <count_elements_in_array>],<count_arrays>] = [
[ 1, 2, 3],
[ 4, 5, 6]
]</count_arrays></count_elements_in_array></type>