2011-04-21 108 views
1

我制作了一个游戏,它是用C++和directX编写的。使用线程加载屏幕动画

当用户选择播放屏幕的任务在一段时间内变为空白时,它会加载所有资源。所以用户知道游戏没有崩溃,我想用动画制作加载屏幕。

我的问题是这样的:

  1. 如果一个线程(主要的)崩溃做的过程中坠毁的所有主题?

  2. 你可以从创建它的线程中销毁一个线程还是线程必须自行终止?

  3. 我是新来的多线程,并没有使用过。很多人说它会让程序变得不必要的复杂,所以值得让我的程序多线程仅仅用于加载屏幕还是有另一种方法呢?

回答

1

如果一个线程(主线程)崩溃会导致进程崩溃的所有线程?

如果主线程崩溃(即UI线程),显然应用程序崩溃。如果任何工作线程崩溃,您将得到一个可以选择忽略的异常。

你可以从创建它的线程中销毁一个线程还是线程必须自行终止?

通常,线程本身应该自行终止(即完成执行)。很明显,你可以发出任何辅助线程停止主线程的信号。

我是新来的多线程,并没有使用过。很多人说它会让程序变得不必要的复杂,所以值得让我的程序多线程仅仅用于加载屏幕还是有另一种方法呢?

如果您认真对待编程,现在比以前更好,那么您将不得不学习多任务处理。

1

如果一个线程(主要的)崩溃做的过程中坠毁的所有主题?

如果通过“崩溃”表示未处理的异常传播到操作系统 - 是的。

你可以从创建它的线程中销毁一个线程还是线程必须自行终止?

还有TerminateThread,但不推荐使用。更好地通知线程它应该终止并将实际的清理留给线程。

我是新来的多线程,并没有使用过。很多人说它会让程序变得不必要的复杂,所以值得让我的程序多线程仅仅用于加载屏幕还是有另一种方法呢?

加载屏幕实际上是多线程的一个很好的例子。但是,我不会创建额外的线程来呈现加载屏幕,而是使用多个线程在您的资源中进行流式处理。渲染应该由一个线程完成(通常建议所有DirectX版本)。

+0

如果我在我的资源中使用多个线程进行流式处理,那么仍然不会使屏幕出现问题?你的意思是说,当我的主线程处理计算和移动图像时,有一个线程不断渲染? – Skeith 2011-04-21 13:18:40

+0

我会让我的主线程在紧密的循环中呈现,而其他线程在完成时会加载资源和信号,在这种情况下,主线程继续前进。 – 2011-04-21 13:23:53