...

Source file src/golang.conradwood.net/go-easyops/utils/locked_int.go

Documentation: golang.conradwood.net/go-easyops/utils

     1  package utils
     2  
     3  import "sync"
     4  
     5  type LockedInt struct {
     6  	sync.Mutex
     7  	val int
     8  }
     9  
    10  // returns PREVIOUS value
    11  func (li *LockedInt) Set(val int) int {
    12  	li.Lock()
    13  	res := li.val
    14  	li.val = val
    15  	li.Unlock()
    16  	return res
    17  }
    18  
    19  // returns NEW value
    20  func (li *LockedInt) Inc() int {
    21  	li.Lock()
    22  	li.val = li.val + 1
    23  	res := li.val
    24  	li.Unlock()
    25  	return res
    26  }
    27  
    28  // returns NEW value
    29  func (li *LockedInt) Dec() int {
    30  	li.Lock()
    31  	li.val = li.val - 1
    32  	res := li.val
    33  	li.Unlock()
    34  	return res
    35  }
    36  func (li *LockedInt) Value() int {
    37  	li.Lock()
    38  	res := li.val
    39  	li.Unlock()
    40  	return res
    41  }
    42  

View as plain text