From 1df33ffacf98f09a33969a8c8ed4078247524d29 Mon Sep 17 00:00:00 2001 From: chenshijun <chenshijun@aiotlink.com> Date: 星期五, 09 十月 2020 14:27:45 +0800 Subject: [PATCH] attach增加超时 --- shmwrap.go | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/shmwrap.go b/shmwrap.go index a6ae885..7697cb7 100644 --- a/shmwrap.go +++ b/shmwrap.go @@ -7,7 +7,10 @@ shm "basic.com/valib/goshm.git" ) -const sleepPeriod = time.Duration(5) * time.Millisecond +const ( + sleepPeriod = time.Duration(5) * time.Millisecond + attachTimes = 100 +) // NewBlock shm block with size func NewBlock(size int, key int) ([]byte, int, error) { @@ -103,6 +106,29 @@ return data, id } +//AttachRawShmTimeout don't create +func AttachRawShmTimeout(ctx context.Context, key int) ([]byte, int) { + tryCount := 0 + data, id, err := AttachBlock(key) + if err != nil { + loopB: + for { + select { + case <-ctx.Done(): + return nil, -1 + default: + if err == nil || tryCount > attachTimes { + break loopB + } + time.Sleep(sleepPeriod) + data, id, err = AttachBlock(key) + tryCount++ + } + } + } + return data, id +} + // CreateShmOnly create shm block with size, only space, no padding, return id(int) // context for quit func CreateShmOnly(ctx context.Context, size int, key int) int { -- Gitblit v1.8.0