c++ - 安全段错误?

标签 c++ c multithreading segmentation-fault

在我的简单游戏中,有一个线程在屏幕上绘图。当我按下 ESC 键时,我让我的程序抛出一个退出信号作为异常。每当捕获到此异常时,都会调用清理函数并退出程序。这种“预期的”段错误发生在未完成屏幕绘制时调用清理函数时,因此绘制线程有些孤立。我的 Ubuntu Linux 操作系统似乎可以安全地处理这个问题并且不会崩溃,尽管它告诉我一个段错误。你觉得就这样放着好吗?如果不是,我可能会面临什么样的严重问题?我只是对在这种情况下系统内部发生的事情有点兴趣。

最佳答案

据我了解,主线程正在释放绘图线程使用的内存,而没有任何形式的同步,即主线程可以在绘图线程正在写入时释放该内存。

这不安全,您绝对不应该那样离开。主线程上的退出处理程序应该停止绘图线程,或者等待它完成,然后才释放内存。

正如您所描述的,您的代码具有未定义的行为。请注意,按预期工作是未定义行为的一种有效形式——但这并不意味着它将始终按预期工作。任何事情都有可能发生。

关于c++ - 安全段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480818/

相关文章:

c - 只有字母的字符串 - 没有用

python - Pyramid:多线程数据库操作

c++ - 将 DataFrame 转换为 Matrix 的最有效方法,反之亦然

c++ - C++ 中的 I/O 格式化

c - 为什么 putchar() 打印出带有 "%"符号的字符?

c++ - 如何正确序列化线程访问控制循环的标志

python-3.x - 我应该如何设置 spaCy 服务器来处理多个并发请求(非阻塞)?

c++:pair.h 编译器错误 - pair 的类型不完整

C++ 不命名类型

c - Gtk,使用 user_data 传递字符串