1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2025-01-06 01:23:15 +02:00
crud_generator/vendor/github.com/ManyakRus/starter/contextmain/contextmain.go
Nikitin Aleksandr b7446dc946 новый
2023-09-28 17:45:44 +03:00

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
}