在我的多线程应用程序中,我使用了 sleep() 函数(来自 GLFW 库的函数):
glfwSleep(..);
它显然导致我的应用程序出现段错误,因为我的调用堆栈显示:
#0 76CFC2BC WaitForSingleObjectEx() (C:\Windows\system32\kernel32.dll:??)
#1 00000016 ??() (??:??)
#2 0000006C ??() (??:??)
#3 00000000 ??() (??:??)
glfwSleep()
用于线程内部。那很危险吗?为什么我的程序会因此而出现段错误?
编辑:
当 的参数glfwSleep()
< 0.02 (secs) 时,它不会出现段错误!
编辑2:
来自 GLFW 的官方文档:
在您习惯之前编写线程应用程序可能会非常尴尬,但有一些非常容易遵循的关键规则:
- 始终确保对线程之间共享的数据的独占访问!
- 确保线程正确同步!
- 从不忙等待!
我想我得到了答案..现在必须找到替代方案..
谢谢!