您好,登錄后才能下訂單哦!
本篇內容主要講解“golang怎么用通道實現串口信號量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“golang怎么用通道實現串口信號量”吧!
串口通信,使用權該誰?需要采用信號量,進行控制。go如何實現?
緩沖通道的緩沖大小等于資源數
time計時器控制超時
func NewPortAvailableSem()*PortAvailableSem{ ps := &PortAvailableSem{ PortChan: make(chan int, 1), } ps.PortChan <- 1 return ps } type PortAvailableSem struct{ PortChan chan int } func (ps *PortAvailableSem) Acquire(block bool, timeout int) bool{ if block{ ticker := time.NewTicker(time.Second*time.Duration(timeout)) select{ case <- ps.PortChan: ticker.Stop() return true case <-ticker.C: return false } }else{ select{ case <- ps.PortChan: return true default: return false } } return false } func (ps *PortAvailableSem) Release(){ if ps.Locked(){ select{ case ps.PortChan <- 1: } } } func (ps *PortAvailableSem) Locked() bool{ return len(ps.PortChan) == 0 }
到此,相信大家對“golang怎么用通道實現串口信號量”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。