V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
thefack
V2EX  ›  Go 编程语言

在终端中运行 golang 程序,滚动终端的输出时有可能导致线程卡死??

  •  
  •   thefack · 2020-08-09 05:39:09 +08:00 · 2902 次点击
    这是一个创建于 1353 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境是 Windows10,go1.12

    在 powershell 中运行 build 好的程序,当用鼠标滚轮滚动查看程序的输出内容时,极有可能导致进程卡住,表现为不再输出内容和网速占用降为 0kb,当按了 Ctrl+c 就恢复正常。而不滚动终端的输出时就没有发生过这种情况。

    请问大伙遇到过这种情况吗?

    10 条回复    2020-08-09 17:38:22 +08:00
    yulon
        1
    yulon  
       2020-08-09 06:37:44 +08:00
    你选中文字了吧,大概怕你白选,控制台会暂停了标准输入输出
    wwqgtxx
        2
    wwqgtxx  
       2020-08-09 06:58:02 +08:00 via iPhone   ❤️ 2
    只要是控制台程序都会这样吧,当滚动终端的时候会阻塞标准输入输出,如果没有在独立线程中 print 的就会卡住当前执行 print 的线程
    thefack
        3
    thefack  
    OP
       2020-08-09 07:05:48 +08:00
    @yulon
    @wwqgtxx
    明白了,谢谢
    locoz
        4
    locoz  
       2020-08-09 08:24:32 +08:00 via Android
    是这样的…你还可能会碰到一个疑似 bug 的情况:控制台最小化之后,过段时间程序也卡住了
    mmdsun
        5
    mmdsun  
       2020-08-09 08:41:08 +08:00 via Android
    关闭 powershell 的快速编辑模式。
    zhuzeitou
        6
    zhuzeitou  
       2020-08-09 10:36:32 +08:00 via Android   ❤️ 1
    封装一个自己的 log 或者什么的,不直接 print 到 stdout 或 stderr,而是先写到一个 buffer 中,然后用一个 goroutine 负责从 buffer 读取内容 print,这样可能阻塞的 print 只会发生在这个 goroutine,调用 log 的时候不会发生阻塞
    May725
        7
    May725  
       2020-08-09 11:25:31 +08:00 via iPhone
    正常的,敲一下回车键就正常了
    thefack
        8
    thefack  
    OP
       2020-08-09 15:43:11 +08:00
    @locoz
    @mmdsun
    @zhuzeitou
    @May725
    谢谢大伙,原来如此,以前没注意过这种问题。
    toomlo
        9
    toomlo  
       2020-08-09 16:24:57 +08:00
    哇,学习到了~~~
    mengyx
        10
    mengyx  
       2020-08-09 17:38:22 +08:00 via Android   ❤️ 1
    可以用 windows terminal,可以避免这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2572 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:00 · PVG 00:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.