Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从goroutine调用阻塞DLL函数?_Go_Dll - Fatal编程技术网

从goroutine调用阻塞DLL函数?

从goroutine调用阻塞DLL函数?,go,dll,Go,Dll,我正在为Windows编写一个Go程序,该程序将调用我单独编写和构建的C DLL。C函数将运行一个事件循环,该循环将大部分时间用于阻塞系统调用 goroutine如下所示: 1) 加载DLL 2) 按名称查找函数 3) 调用它,它只有在我关闭进程时才会返回 我知道goroutine不是“真正的”线程,但在这种情况下,将其视为一个线程安全吗?到目前为止,这个程序似乎正是我想要的,但我有点担心goroutine调度程序会在某个时候咬我 这安全吗?谢谢 然后使syscall所有操作系统线程锁定并等待s

我正在为Windows编写一个Go程序,该程序将调用我单独编写和构建的C DLL。C函数将运行一个事件循环,该循环将大部分时间用于阻塞系统调用

goroutine如下所示: 1) 加载DLL 2) 按名称查找函数 3) 调用它,它只有在我关闭进程时才会返回

我知道goroutine不是“真正的”线程,但在这种情况下,将其视为一个线程安全吗?到目前为止,这个程序似乎正是我想要的,但我有点担心goroutine调度程序会在某个时候咬我


这安全吗?谢谢

然后使syscall所有操作系统线程锁定并等待syscall结束。所有其他线程都运行良好

为了获得更好的并发性,您可以使用从当前操作系统线程移出所有goroutine

它是安全的。