我运行一个goroutine来增加一个计数器,该计数器可以被命令行输入“ t \ n”打断
在该select
语句中,如果我选择使用default:
,则计数器变量会j
飞到前言。对我来说这很正常。
但是,如果我选择使用case <-time.After(100*time.Microsecond):
,则计数器j
在一秒内最多只能增加60个左右,而不是10,000个。
实际上,无论我输入什么值time.After()
,在select
声明中我只能得到大约60Hz的频率。
为什么?
package main
import (
"bufio"
"fmt"
"os"
"strings"
"time"
)
func main() {
message := make(chan string)
go check_input(message)
work_loop(message)
}
func work_loop(message chan string) {
//var j [][]int
var j int
t0:=time.Now()
Loop:
for {
select {
case msg := <-message:
if msg == "terminate" {
//fmt.Println("end task")
t1:=time.Now()
fmt.Println(j)
fmt.Println("total duration:", t1.Sub(t0))
break Loop
}
case <-time.After(100 * time.Microsecond):
//default:
//do work here
j += 1
fmt.Println(j)
break
}
}
//fmt.Println("exit work loop")
}
func check_input(msg chan string) {
reader := bufio.NewReader(os.Stdin)
for {
line, err := reader.ReadString('\n')
if err != nil {
// You may check here if err == io.EOF
break
}
if strings.TrimSpace(line) == "t" {
msg <- "terminate"
}
}
}
它与的精度有关time.Timer
。查看以下文档time.After
:
[…]等效于NewTimer(d).C。
以及以下文件time.NewTimer
:
NewTimer创建一个新的Timer,它将 至少在 持续时间d 之后 在 其通道上发送当前时间。
(强调我的)
这样做的原因是NewTimer
委托给运行时(与OS相关)计时器,使此计时器的行为取决于基础OS(以及Go集成的实现)。
通常,根据我的经验,亚毫秒级粒度在任何语言中都没有良好的跨平台支持, 尤其是 在Windows XP上。
在使用disruptor时,可能会有一个(多个)消费者落后,并且由于这个缓慢的消费者,整个应用程序都会受到影响。 请记住,每个生产者(发布者)和消费者(EventProcessor)都在一个线程上运行,如何解决消费者速度慢的问题? 我们可以在单个消费者上使用多个线程吗?如果没有,有什么更好的选择?
我需要用价格值追加$symbol。从db中,我得到的值是:“125.00”、“--”、“废话废话”。 我只需要为有效的整数追加$symbol。如何才能做到这一点,我已经尝试了以下代码:
1. 逻辑流程 注(1): 此处逻辑为可选逻辑,详情参见 【小程序深度对接->上报用户信息】 2. 集成步骤 2.1 添加发起会话按钮 <button open-type="contact" />咨询客服</button> 2.2 小能客户端配置小程序 登录小能客户端,设置->接入设置->第三方接入->小程序 ->点击按钮接入微信小程序 -> 选择极速模式 填写小程序信息 复制小能服务器信息,需
form control()validators . pattern()与此regex表达式有问题,用于验证1个字符、1个数字、最少8个字符、最多16个字符的密码。 通过验证程序的测试密码: asdfqwer//不应通过验证器 zxcvasdf//不应通过验证器 asdfqwer2 //这是正确的 不通过验证器的测试密码: 程序//这是正确的 在服务器端尝试这种模式或者使用在线regex测试平台都
我正在使用以下xml架构验证一些xml文件: 我只是想引入一些assert标记,以便进行更强大的验证。但这导致了例外情况: 系统Xml。模式。XmlSchemaException:http://www.w3.org/2001/XMLSchema:assert-元素在此上下文中不受支持。 我现在不知道的是。。。 我在xsd中错误的地方使用了asstrt-元素 http://www.w3.org/20
使用指南 - 数据报告 - 优化分析 - 网站速度诊断能帮助您发现什么问题 网站打开较慢有两方面因素: 1、网站自身原因,这部分原因可以通过页面优化以及相应设置予以改善。 2、网络运营商自身原因或网站服务器提供商的原因,在排除非自身网站问题后,通过运营商之间的对比,以及网站间对比去及时发现服务提供商的问题。 下面将对百度统计智能分析几种关注的几类问题予以说明: 1、连接网络:在页面打开过程中,连接