golang怎么用通道实现串口信号量

阅读:66

本篇内容主要讲解“golang怎么用通道实现串口信号量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“golang怎么用通道实现串口信号量”吧!

描述

串口通信,使用权该谁?需要采用信号量,进行控制。go如何实现?

原理缓冲通道的缓冲大小等于资源数

time计时器控制超时

示例func NewPortAvailableSem()*PortAvailableSem{

ps := &PortAvailableSem{

PortChan: make(chan int, 1),

}

ps.PortChan 

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  

ticker.Stop()

return true

case 

return false

}

}else{

select{

case 

return true

default:

return false

}

}

return false

}

func (ps *PortAvailableSem) Release(){

if ps.Locked(){

select{

case ps.PortChan 

}

}

}

func (ps *PortAvailableSem) Locked() bool{

return len(ps.PortChan) == 0

}

到此,相信大家对“golang怎么用通道实现串口信号量”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!