chenshijun
2020-10-09 1df33ffacf98f09a33969a8c8ed4078247524d29
attach增加超时
2个文件已修改
30 ■■■■■ 已修改文件
shmqueue.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
shmwrap.go 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shmqueue.go
@@ -106,7 +106,7 @@
func AttachQueue(ctx context.Context, key int) *EsQueueInfo {
    var eqi EsQueueInfo
    data, shmid := AttachRawShm(ctx, key)
    data, shmid := AttachRawShmTimeout(ctx, key)
    if shmid == -1 {
        return nil
    }
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 {