github.com/pharosnet/flyline@v1.0.2/status.go (about)

     1  package flyline
     2  
     3  import "sync/atomic"
     4  
     5  const (
     6  	statusRunning = int64(1)
     7  	statusClosed  = int64(0)
     8  )
     9  
    10  // status: running, closed
    11  type status struct {
    12  	v   int64
    13  	rhs [padding]int64
    14  }
    15  
    16  func (s *status) setRunning() {
    17  	atomic.StoreInt64(&s.v, statusRunning)
    18  }
    19  
    20  func (s *status) isRunning() bool {
    21  	return statusRunning == atomic.LoadInt64(&s.v)
    22  }
    23  
    24  func (s *status) setClosed() {
    25  	atomic.StoreInt64(&s.v, statusClosed)
    26  }
    27  
    28  func (s *status) isClosed() bool {
    29  	return statusClosed == atomic.LoadInt64(&s.v)
    30  }