2017-05-08 126 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()所有夠程從當前操作系統線程遷出。