1. В чем разница процесса и потока в рамках операционной системы?
Процесс — это независимая программа, выполняющаяся в памяти, у которой есть собственное адресное пространство. Поток — это единица выполнения внутри процесса, которая использует общее адресное пространство. Потоки легче создавать и переключать, но процессы изолированы друг от друга.
2. Что такое WaitGroup?
WaitGroup в Go — это структура из пакета sync, позволяющая организовать ожидание завершения набора горутин. Она предоставляет методы для увеличения счетчика активных горутин, их завершения и блокировки выполнения до их завершения.3. Что будет, если попытаться писать в закрытом канале?
Попытка записи в закрытый канал вызовет панику (runtime panic). Это связано с тем, что закрытый канал не может принимать новые данные. Чтобы избежать этого, нужно проверять состояние канала перед записью или использовать механизм восстановления после паники (
recover).4. Зачем нужна конструкция defer?
defer позволяет отложить выполнение функции до завершения текущей функции. Это удобно для освобождения ресурсов, закрытия файлов или завершения транзакций.5. Что такое mutex, какие они бывают и как их использовать?
Mutex — это механизм синхронизации, который предотвращает одновременный доступ к разделяемым ресурсам несколькими горутинами. В Go есть два типа мьютексов: sync.Mutex (блокирует доступ) и sync.RWMutex (разделяет доступ для чтения и записи). Для работы с мьютексами нужно использовать методы
Lock и Unlock.#process #thread #multithreading #waitgroup #sync #goroutines #channel #close #panic #defer #lifo #cleanup #mutex #synchronization #unlock