如何解决使用来自不同Goroutine的全局变量调用C函数
例如,我有一个运行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 举报,一经查实,本站将立刻删除。