【问题标题】:How to call a function inside a thread?如何在线程内调用函数?
【发布时间】:2015-12-21 13:18:24
【问题描述】:

我想在另一个线程(在 SDL 中)上执行一些加载和保存操作。为了能够做到这一点,我想在每次调用需要单独运行的函数时创建一个线程并分离它(让它自行结束)。
但我认为这不是正确的行为(或者是吗?)。
有没有更好的解决方案,比如只创建和使用一个线程?如果有,我怎样才能从中调用我的函数?

【问题讨论】:

  • 那些沉默的反对者......
  • SDL2 是否与此直接相关? Y“正确”是什么意思?您是否担心资源泄漏? C++11 的异步对你有用吗?
  • 我正在使用 SDL2 并计划使用 SDL 的信号量、互斥体......所以我只想使用它。 “正确”是指如果这是应该这样做的方式。

标签: sdl-2


【解决方案1】:

使用std::async。在大多数实现中,它使用高效的解决方案,例如重用线程池中的线程。

【讨论】:

    【解决方案2】:

    线程的生命周期取决于主线程(或父线程),如果没有连接,所有子线程将在主线程(或父线程)退出时终止。线程与进程绑定。您可能想考虑分叉一个进程,即使父进程退出,这也会持续存在,但可能是一个僵尸进程,无法在程序中终止它。

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 2015-07-17
      • 2018-04-11
      • 2015-11-14
      相关资源
      最近更新 更多