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

goroutine 调用别的 dll 的同步操作,也一样会休眠等待 dll 返回吗?

  •  
  •   admirez · 2018-02-28 22:48:18 +08:00 · 1027 次点击
    这是一个创建于 2470 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如调用的那个 DLL 内部操作是一个同步网络请求,很卡很费时
    4 条回复    2018-03-06 10:54:25 +08:00
    q397064399
        1
    q397064399  
       2018-03-01 09:08:48 +08:00
    这个看 goroutine 的实现原理,阻塞式 IO 会不会 释放当前系统线程 让其它 Goroutine 跑起来 你可以把系统线程 设置为 1 然后跑两个 GoRoutine 试试
    445141126
        2
    445141126  
       2018-03-03 14:02:10 +08:00 via Android
    goroutine 可以看成是轻量线程,即使是 cpu bound 也不会阻塞主线程
    admirez
        3
    admirez  
    OP
       2018-03-03 14:04:02 +08:00
    @445141126 有参考 url 么?
    ssoor
        4
    ssoor  
       2018-03-06 10:54:25 +08:00
    先说结论: 是的,会休眠等待。

    goroutine 在调用 syscall.Syscall*() 时会将系统线程设置为系统调用,保存堆栈,释放当前 goruntine 对 goruntine 数量的占用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3533 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 11:05 · PVG 19:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.