多台机器,固定间隔每台分别去执行任务。


package main import (
"fmt"
"strconv"
"time"
) func main() {
// 周期60 秒, 获取当前秒钟数,
r := 60
interval := 5 // 机器节点数
node := []string{"node-1", "node-2","node-2"}
localIntranetIP := "node-1"
arr := []int{}
for i:=0; i< r; i=i + int( interval) {
arr = append(arr, i)
} var index int
var setIndex bool
for key, value := range node {
if value == localIntranetIP {
index = key
setIndex = true
break
}
}
if !setIndex {
fmt.Println("no set index !")
return
} l := len(node)
m := make([][]int, l)
for key, value := range arr {
s := key % l
m[s] = append(m[s], value)
} var selfTimer = []int{} if len(m) >= index + 1 {
selfTimer = m[index]
}
fmt.Println(m)
fmt.Println(selfTimer)
// 初始 200毫秒
timer := time. NewTimer( 200*time.Millisecond)
defer timer.Stop()
var lastTime int
selfTimerLen := len(selfTimer)
for {
select {
case <- timer.C: timer.Reset( 200*time.Millisecond)
secTime := nowTimeSec()
for key, _ := range selfTimer {
// 数组末尾值
if key == selfTimerLen - 1 && lastTime != selfTimer[key] && secTime > selfTimer[key] {
lastTime = selfTimer[key]
doWork()
} else if key < selfTimerLen - 1 && selfTimer[key] < secTime && secTime <= selfTimer[key + 1 ] && lastTime != selfTimer[key] {
lastTime = selfTimer[key]
doWork()
}
}
}
}
} func nowTimeSec() int {
secStr := time.Now().Format("05")
secInt, _ := strconv.Atoi(secStr)
return secInt
} func doWork() {
fmt.Println("do work !", time.Now().Format("2006-01-02 15:04:05"))
}

最新文章

  1. 大理石在哪里UVa 10474
  2. NoSql之旅--Cassandra的Cql简介(二)
  3. wp插件
  4. C#验证是否是真的图片格式
  5. Python3基础 for循环 遍历并输出一个字符串的列表
  6. C7 连接电脑问题解决
  7. Hadoop2安装
  8. 彻底理解Gradle的任务
  9. 硝烟中的Scrum和XP-我们如何实施Scrum 15)多团队 Part 2/2 16)地理分散 17)检查列表 18)其他
  10. OpenCart 之registry功用
  11. python变量不能以数字打头
  12. concurrent.futures
  13. python3之面向对象
  14. Jenkins通过Publish over SSH插件实现远程部署
  15. ORACLE数据库管理员的职责
  16. TFT2.2
  17. C语言goto语句的使用
  18. Quartz中时间表达式的设置-----corn表达式 (转)
  19. 跟我学SharePoint 2013视频培训课程——删除恢复、文档离线工作(11)
  20. Activity 经历如下3个阶段

热门文章

  1. ng-alain全局配置NzMessageService
  2. 商城网站商品sku选择的js简易实现
  3. Map接口中的常用方法-Map集合遍历建找值方式
  4. 一小时学会微信小程序
  5. 各种排序算法实现(JAVA)
  6. 普冉PY32系列(五) 使用JLink RTT代替串口输出日志
  7. SpringBoot 2.x 在Tomcat8上无法运行,报无法访问错误
  8. MRS+LakeFormation:打造一站式湖仓,释放数据价值
  9. centos7 在线或离线安装python3
  10. window.alert和console.log()