问题描述
例如,我有一个运行C循环的goroutine更新全局变量,而另一个goroutine读取了该变量,是否会发生竞争条件?而且由于Cgo将使用g0作为外部函数来调用C函数,调度将如何发生,以便另一个goroutine可以进入内部并读取该变量的值?此外,如果有任何竞争条件,我是否可以使用pthread锁定消除竞争条件?
int i = 0;
void loop() {
while(1) i++;
}
int read() {
return i;
}
Golang文件为:
/*
#include <test.c>
extern void loop();
extern int read();
*/
import "C"
import "fmt"
func main() {
go func(){
C.loop()
}()
for {
fmt.Println(C.read())
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)