GO_INTERVIEW_LIB Telegram 359
💬 Почему следует избегать использования context.Background() напрямую? Какие есть альтернативы?

Использование context.Background() напрямую не рекомендуется, потому что он не предоставляет способа остановить или отменить операции, если что-то пойдет не так. Этот контекст самый простой, без значений, сроков и сигналов отмены. Это может стать проблемой, когда задачи застревают или требуют плавного завершения.

Чтобы справиться с этим, лучше использовать context.WithTimeout, context.WithCancel или context.WithDeadline. Эти контексты позволяют задавать время ожидания или возможность отмены, что делает горутины более управляемыми и надежными.

📌 Вот примеры использования:

🔸 context.WithTimeout(ctx, duration): задает время ожидания для выполнения задачи.
🔸 context.WithCancel(ctx): позволяет отменить задачу вручную.
🔸 context.WithDeadline(ctx, deadline): устанавливает конкретное время завершения задачи.

Можно также использовать функции с суффиксом Cause (например, context.WithTimeoutCause), которые дают более детальные сообщения об ошибках (например, "context deadline exceeded: custom message").

В случае работы с каналами, чтобы не ждать ответа бесконечно, можно использовать конструкцию select с тайм-аутом:

select {
case result := <-ch:
fmt.Println("Received result:", result)
case <-time.After(5 * time.Second):
fmt.Println("Timed out")
}


Однако, time.After может привести к краткосрочным утечкам памяти. В таких случаях лучше использовать time.Timer или time.Ticker для лучшего контроля над временем.
👍3



tgoop.com/go_interview_lib/359
Create:
Last Update:

💬 Почему следует избегать использования context.Background() напрямую? Какие есть альтернативы?

Использование context.Background() напрямую не рекомендуется, потому что он не предоставляет способа остановить или отменить операции, если что-то пойдет не так. Этот контекст самый простой, без значений, сроков и сигналов отмены. Это может стать проблемой, когда задачи застревают или требуют плавного завершения.

Чтобы справиться с этим, лучше использовать context.WithTimeout, context.WithCancel или context.WithDeadline. Эти контексты позволяют задавать время ожидания или возможность отмены, что делает горутины более управляемыми и надежными.

📌 Вот примеры использования:

🔸 context.WithTimeout(ctx, duration): задает время ожидания для выполнения задачи.
🔸 context.WithCancel(ctx): позволяет отменить задачу вручную.
🔸 context.WithDeadline(ctx, deadline): устанавливает конкретное время завершения задачи.

Можно также использовать функции с суффиксом Cause (например, context.WithTimeoutCause), которые дают более детальные сообщения об ошибках (например, "context deadline exceeded: custom message").

В случае работы с каналами, чтобы не ждать ответа бесконечно, можно использовать конструкцию select с тайм-аутом:

select {
case result := <-ch:
fmt.Println("Received result:", result)
case <-time.After(5 * time.Second):
fmt.Println("Timed out")
}


Однако, time.After может привести к краткосрочным утечкам памяти. В таких случаях лучше использовать time.Timer или time.Ticker для лучшего контроля над временем.

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/359

View MORE
Open in Telegram


Telegram News

Date: |

Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. Judge Hui described Ng as inciting others to “commit a massacre” with three posts teaching people to make “toxic chlorine gas bombs,” target police stations, police quarters and the city’s metro stations. This offence was “rather serious,” the court said. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. How to Create a Private or Public Channel on Telegram?
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American