V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
admirez

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

  •  
  •   admirez · Feb 28, 2018 · 1543 views
    This topic created in 2988 days ago, the information mentioned may be changed or developed.
    比如调用的那个 DLL 内部操作是一个同步网络请求,很卡很费时
    4 replies    2018-03-06 10:54:25 +08:00
    q397064399
        1
    q397064399  
       Mar 1, 2018
    这个看 goroutine 的实现原理,阻塞式 IO 会不会 释放当前系统线程 让其它 Goroutine 跑起来 你可以把系统线程 设置为 1 然后跑两个 GoRoutine 试试
    445141126
        2
    445141126  
       Mar 3, 2018 via Android
    goroutine 可以看成是轻量线程,即使是 cpu bound 也不会阻塞主线程
    admirez
        3
    admirez  
    OP
       Mar 3, 2018
    @445141126 有参考 url 么?
    ssoor
        4
    ssoor  
       Mar 6, 2018
    先说结论: 是的,会休眠等待。

    goroutine 在调用 syscall.Syscall*() 时会将系统线程设置为系统调用,保存堆栈,释放当前 goruntine 对 goruntine 数量的占用。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3323 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 11:36 · PVG 19:36 · LAX 04:36 · JFK 07:36
    ♥ Do have faith in what you're doing.