Go

Примітиви синхронізації

sync.Mutex, RWMutex, Once, Pool, Map, Cond, атомарні операції

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

Що таке sync.Mutex у Go?

Відповідь

sync.Mutex (mutual exclusion lock) — це примітив синхронізації, який гарантує, що лише одна горутина може отримати доступ до критичної секції одночасно. Виклик Lock блокує, доки mutex не стане доступним, а Unlock звільняє його для інших горутин. Використовується для захисту одночасного доступу до спільних даних.

2

Що станеться, якщо ми забудемо викликати Unlock після Lock на sync.Mutex?

Відповідь

Забування Unlock створює потенційний deadlock, оскільки інші горутини нескінченно чекатимуть, щоб отримати mutex. Найкраща практика — використовувати defer, щоб гарантувати виклик Unlock навіть у разі panic. Завжди поєднуйте Lock і Unlock в одній області видимості, щоб уникнути витоків блокування.

3

Яка основна різниця між sync.Mutex і sync.RWMutex?

Відповідь

sync.RWMutex дозволяє кілька одночасних читань через RLock, але лише один виключний запис через Lock. Це покращує продуктивність у сценаріях з інтенсивним читанням, оскільки читачі не блокують один одного. Використовуйте RWMutex, коли читання часті, а записи рідкісні.

4

Чому варто використовувати defer з Unlock на sync.Mutex?

5

Коли варто віддавати перевагу sync.RWMutex над sync.Mutex?

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

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

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

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