GO_INTERVIEW_LIB Telegram 364
💬 Как использовать context.AfterFunc для выполнения функции после отмены контекста и что происходит, если контекст уже отменен?

В Go функция context.AfterFunc (Go 1.21 +) позволяет запланировать выполнение функции после завершения контекста, будь то из-за отмены или тайм-аута. Она запускает функцию в новой горутине сразу после того, как канал ctx.Done родительского контекста отправляет сигнал.

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


ctx, cancel := context.WithTimeout(parentCtx, 5*time.Second)
defer cancel()

stop := context.AfterFunc(ctx, func() {
fmt.Println("Cleanup operations after context is done")
})


Если контекст уже отменен на момент вызова AfterFunc, функция f будет выполнена немедленно в новой горутине.

Функция stop() позволяет отменить запланированную функцию, если она еще не начала выполняться. Если stop() возвращает true, это означает, что функция была успешно остановлена до выполнения. Если stop() возвращает false, это означает, что функция уже начала выполняться или была остановлена ранее.

📌 Пример использования stop():


stop := context.AfterFunc(ctx, func() {
// some cleanup code
})

if stopped := stop(); stopped {
fmt.Println("Remove the callback before context is done")
}


Функция AfterFunc полезна для выполнения задач очистки, логирования или других операций, которые необходимо выполнить после отмены контекста.
👍12



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

💬 Как использовать context.AfterFunc для выполнения функции после отмены контекста и что происходит, если контекст уже отменен?

В Go функция context.AfterFunc (Go 1.21 +) позволяет запланировать выполнение функции после завершения контекста, будь то из-за отмены или тайм-аута. Она запускает функцию в новой горутине сразу после того, как канал ctx.Done родительского контекста отправляет сигнал.

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


ctx, cancel := context.WithTimeout(parentCtx, 5*time.Second)
defer cancel()

stop := context.AfterFunc(ctx, func() {
fmt.Println("Cleanup operations after context is done")
})


Если контекст уже отменен на момент вызова AfterFunc, функция f будет выполнена немедленно в новой горутине.

Функция stop() позволяет отменить запланированную функцию, если она еще не начала выполняться. Если stop() возвращает true, это означает, что функция была успешно остановлена до выполнения. Если stop() возвращает false, это означает, что функция уже начала выполняться или была остановлена ранее.

📌 Пример использования stop():


stop := context.AfterFunc(ctx, func() {
// some cleanup code
})

if stopped := stop(); stopped {
fmt.Println("Remove the callback before context is done")
}


Функция AfterFunc полезна для выполнения задач очистки, логирования или других операций, которые необходимо выполнить после отмены контекста.

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


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

View MORE
Open in Telegram


Telegram News

Date: |

Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. Telegram users themselves will be able to flag and report potentially false content. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information.
from us


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