34 lines
698 B
Go
34 lines
698 B
Go
![]() |
package method
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
// 定义一个阻断器通道
|
||
|
var blocker = make(chan struct{})
|
||
|
|
||
|
// 定义一个信号通道,用于中断阻断器
|
||
|
var interrupt = make(chan struct{})
|
||
|
|
||
|
// StartBlocker 启动阻断器
|
||
|
func StartBlocker() {
|
||
|
func() {
|
||
|
fmt.Println("阻断器启动,等待中断信号...")
|
||
|
for {
|
||
|
select {
|
||
|
case <-blocker: // 阻塞等待
|
||
|
fmt.Println("阻断器正在运行...")
|
||
|
case <-interrupt: // 接收到中断信号
|
||
|
fmt.Println("接收到中断信号,阻断器即将终止")
|
||
|
return // 退出阻断器
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
}
|
||
|
|
||
|
// InterruptBlocker 发送中断信号
|
||
|
func InterruptBlocker() {
|
||
|
interrupt <- struct{}{}
|
||
|
fmt.Println("中断信号已发送")
|
||
|
}
|