秒表

package main

import (
"fmt"
"time"
) /*每秒大喊我要去浪,共9次,然后退出计时*/ func main() {
var tickerStopped = false
ticker := time.NewTicker(time.Second)
go func() {
time.Sleep(9 * time.Second)
ticker.Stop()
tickerStopped = true
}()
for {
if tickerStopped {
break
} //每次阻塞1秒
<-ticker.C
fmt.Println("我要去浪")
} fmt.Println("main over")
}

定时器

package main

import (
"fmt"
"os"
"time"
) /*三秒后宣布*/
func main051() {
timer := time.NewTimer(3 * time.Second)
fmt.Println("计时开始", time.Now())
x := <- timer.C //时间管道
fmt.Println("引爆于", x) fmt.Println("罗志祥的时间管理")
} /*简易实现方式*/
func main052() {
fmt.Println("计时开始", time.Now())
x:=<-time.After(3*time.Second)
fmt.Println("引爆于", x)
fmt.Println("罗志祥的时间管理")
} /*定时器的终止*/
func main053() {
timer := time.NewTimer(5 * time.Second)
fmt.Println("计时开始",time.Now())
go func() {
time.Sleep(3*time.Second)
//停止计时器(永远不会向timer.C中写入数据了)
ok := timer.Stop()
if ok{
fmt.Println("炸弹已拆除")
os.Exit(0)
}
}() //阻塞5秒
endTime := <-timer.C
fmt.Println("炸弹引爆于", endTime)
} /*定时器重置*/
func main054() {
timer := time.NewTimer(5 * time.Second)
fmt.Println("计时开始",time.Now()) time.Sleep(time.Second)
//以当前时间为基准(而不是timer被创建的时间),将定时器设置为2秒
timer.Reset(2*time.Second) //阻塞5秒
endTime := <-timer.C
fmt.Println("炸弹引爆于", endTime)
} /*爆炸后重置定时器*/
func main() {
timer := time.NewTimer(3 * time.Second)
fmt.Println("计时开始",time.Now()) //睡眠期间,timer.C已经被写入时间
time.Sleep(5*time.Second)
//以当前时间为基准(而不是timer被创建的时间),将定时器设置为2秒
timer.Reset(2*time.Second) //阻塞5秒
endTime := <-timer.C
fmt.Println("炸弹引爆于", endTime)
}

  

Go语言协程并发---timer秒表与定时器的更多相关文章

  1. Go语言协程并发---管道信号量应用

    package main import ( "fmt" "math" "strconv" "time" ) /* ·10 ...

  2. Go语言协程并发---互斥锁sync.Mutex

    package main import ( "fmt" "sync" "time" ) /* mt.Lock() 抢锁 一次只能被一个协程锁 ...

  3. Go语言协程并发---等待组sync.WaitGroup

    package main import ( "fmt" "sync" "time" ) /*等待组API介绍*/ func main071( ...

  4. Go语言协程并发---条件变量

    package main import ( "fmt" "sync" "time" ) func main() { //要监听的变量 bit ...

  5. Go语言协程并发---读写锁sync.RWMutex

    package main import ( "fmt" "sync" "time" ) /* 读写锁 多路只读 一路只写 读写互斥 */ / ...

  6. Go语言协程并发---生产者消费者实例

    package main import ( "fmt" "strconv" "time" ) /* 改进生产者消费者模型 ·生产者每秒生产一 ...

  7. Go语言协程并发---原子操作

    package main import ( "fmt" "sync/atomic" ) /* 用原子来替换锁,其主要原因是: 原子操作由底层硬件支持,而锁则由操 ...

  8. Go语言协程并发---select多路复用应用

    package main import ( "fmt" "time" ) /* ·循环从一写两读三条管道中随机选择一条能走的路 ·等所有路都走不通了就退出循环 ...

  9. python3通过gevent.pool限制协程并发数量

    协程虽然是轻量级的线程,但到达一定数量后,仍然会造成服务器崩溃出错.最好的方法通过限制协程并发数量来解决此类问题. server代码: #!/usr/bin/env python # -*- codi ...

随机推荐

  1. C#开发医学影像胶片打印系统(一):万能花式布局的实现思路

    本篇文章将介绍开发医学影像胶片打印系统(printscu模式)遇到不规则排版时的一种思路, 一般来讲,医院打印胶片时都是整张胶片打印,但有时需要将多个病人或一个病人的多个检查打印在同一张胶片上, 这时 ...

  2. Oralce注入 bypass waf出数据

    发存货: 探测banner 版本号: ' and (SELECT banner FROM v$version where rownum=1) like 'O%' and '1'like'1 rownu ...

  3. jQuery监控键盘事件

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  4. 【ShardingSphere】ShardingSphere学习(一)

    参考官方文档:http://shardingsphere.apache.org/ ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sha ...

  5. vim 中文乱码解决

    问题如下: 在vim中编辑一个中文文本时 出现中文乱码情况 问题解决: 修改vimrc的脚本配置 编辑~/.vimrc文件,加上如下几行即可: set fileencodings=utf-8,ucs- ...

  6. Mysql 8.0安装

    1. 下载安装包至/usr/local目录下 下载地址:https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.16-el7-x86_64.tar.gz ...

  7. Python小游戏 -- 猜数字

    Python初学者小游戏:猜数字 游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次数后,玩家失败.若在次数内猜对,玩家获胜. 涉及知识点:r ...

  8. mimikatz的使用

    mimikatz mimikatz是法国人Gentil Kiwi编写的一款Windows平台下的神器,它具备很多功能,其中最主要的功能是直接从 lsass.exe 进程里获取处于active状态账号的 ...

  9. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  10. XCTF-unfinish

    unfinish 之前做过这个题,这是之前写的WP:链接