Загрузка анимации экрана с использованием потоков - PullRequest
1 голос
/ 21 апреля 2011

Я сделал игру, она написана на C ++ и DirectX.

Когда пользователь выбирает, какую миссию играть, экран на некоторое время гаснет, загружаясь во все ресурсы.Итак, пользователь знает, что игра не рухнула. Я хочу сделать загрузочный экран с анимацией.

Мой вопрос такой:

  1. Если один поток (основной) происходит ли сбой всех потоков этого процесса?

  2. Можете ли вы уничтожить поток из потока, который его создал, или поток должен завершить сам себя?

  3. Я новичок в многопоточности и не использовал его раньше.Многие люди говорят, что это делает программы излишне сложными, поэтому стоит ли делать мою программу многопоточной только для экрана загрузки или есть другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Если происходит сбой одного потока (основного), происходит ли сбой всех потоков этого процесса?

Если происходит сбой основного потока (т. Е. Потока пользовательского интерфейса), очевидно, что происходит сбой приложения. В случае сбоя любого рабочего потока вы получите исключение, которое можете игнорировать.

Можете ли вы уничтожить поток из потока, который его создал, или поток должен завершить сам себя?

Обычно сам поток должен завершать себя (то есть завершать выполнение). Очевидно, что вы можете дать сигнал любому вторичному потоку прекратить работу основного потока.

Я новичок в многопоточности и не использовал его раньше. Многие люди говорят, что это делает программы излишне сложными, поэтому стоит ли делать мою программу многопоточной только для экрана загрузки или есть другой способ сделать это?

Вам придется научиться многозадачности, если вы серьезно относитесь к программированию лучше, чем никогда.

1 голос
/ 21 апреля 2011

Если происходит сбой одного потока (основного), происходит ли сбой всех потоков этого процесса?

Если под словом «сбой» вы подразумеваете, что необработанное исключение распространяется в операционной системе -Да.

Можете ли вы уничтожить поток из потока, который его создал, или поток должен завершить сам себя?

Есть TerminateThread, но его использование нерекомендуемые.Лучше уведомить поток о том, что он должен завершиться, и оставить фактическую очистку для потока.

Я новичок в многопоточности и не использовал его раньше.Многие люди говорят, что это делает программы излишне сложными, поэтому стоит ли делать мою программу многопоточной только для экрана загрузки или есть другой способ сделать это?

Экран загрузки - это действительно хороший пример многопоточности.Однако я бы не стал создавать дополнительный поток для отображения экрана загрузки, а использовал бы несколько потоков для потоковой передачи ваших ресурсов.Рендеринг должен выполняться одним потоком (это обычно рекомендуется для всех версий DirectX).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...