chenshijun
2020-10-09 1df33ffacf98f09a33969a8c8ed4078247524d29
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 {