2017-05-08 67 views
2

我正在写一个Windows的围棋程序,将调用到C DLL,我写,并分别建成。 C函数将运行一个事件循环,花费大部分时间在阻塞系统调用中。从goroutine调用阻塞DLL函数?

的够程看起来是这样的: 1)加载DLL 2)查找名称 3)把它的功能,当我关闭过程将只返回。

我知道够程不是“真正的”线程,但它安全把它作为一个在这种情况下?到目前为止,这个程序看起来完全符合我的要求,但我有点担心goroutine调度程序在某些时候会咬我。

这安全吗?谢谢!

+0

它是安全的。 https://www.quora.com/Go-programming-language-What-happens-when-a-goroutine-blocks –

回答

0

然后你让所有的系统调用OS线程锁,并等待系统调用结束。所有其他线程运行良好。

为了更好的并发性,您可以使用runtime.LockOSThread()所有够程从当前操作系统线程迁出。