mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2025-01-06 01:23:15 +02:00
53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
// модуль для получения единого Context приложения
|
|
|
|
package contextmain
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
// Ctx хранит глобальный контекст программы
|
|
// не использовать
|
|
// * - чтоб можно было засунуть ссылку на чужой контекст
|
|
var Ctx *context.Context
|
|
|
|
// CancelContext - функция отмены глобального контекста
|
|
var CancelContext func()
|
|
|
|
// onceCtx - гарантирует единственное создание контеста
|
|
var onceCtx sync.Once
|
|
|
|
// lockContextMain - гарантирует единственное создание контеста
|
|
// var lockContextMain sync.Mutex
|
|
|
|
// GetContext - возвращает глобальный контекст приложения
|
|
func GetContext() context.Context {
|
|
//lockContextMain.Lock()
|
|
//defer lockContextMain.Unlock()
|
|
//
|
|
//if Ctx == nil {
|
|
// CtxBg := context.Background()
|
|
// Ctx, CancelContext = context.WithCancel(CtxBg)
|
|
//}
|
|
|
|
onceCtx.Do(func() {
|
|
CtxBg := context.Background()
|
|
var Ctx0 context.Context
|
|
Ctx0, CancelContext = context.WithCancel(CtxBg)
|
|
Ctx = &Ctx0
|
|
})
|
|
|
|
return *Ctx
|
|
}
|
|
|
|
// GetNewContext - создаёт и возвращает новый контекст приложения
|
|
func GetNewContext() context.Context {
|
|
CtxBg := context.Background()
|
|
var Ctx0 context.Context
|
|
Ctx0, CancelContext = context.WithCancel(CtxBg)
|
|
Ctx = &Ctx0
|
|
|
|
return *Ctx
|
|
}
|