Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bretbas
189 / 48 / 7
Регистрация: 05.08.2013
Сообщений: 766
Завершенные тесты: 1
#1

Поток с бесконечным циклом - C++

21.06.2014, 00:07. Просмотров 407. Ответов 5
Метки нет (Все метки)

Добрый вечер всем.
Пишу простенькую игру, появилась необходмость в дополнительном потоке. Как не крутил поставленную задачу над игрой, прихожу к одному - бесконечный цикл в точке входа(функции) в поток.
Где-то читал,что нежелательно делать бесконечные циклы в функции потока,и лучше всего сделать так,чтобы она завершалась самостоятельно...но что делать, что если по другому задачу не реализовать? Немного переформулирую свою фразу : что если по другому задачу не реализовать НА МОЙ ВЗГЛЯД?

И как кстати мне завершить этот поток,кроме как выход из программы?
Подскажите плизз)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 00:07     Поток с бесконечным циклом
Посмотрите здесь:

цикл for стал бесконечным? - C++
В общем, по заданию дано матрицу, для неё надо просуммировать все элементы столбцов и вывести строку сумм. И так надо сделать для двух...

В какой среде лучше писать крестики-нолики с бесконечным полем? - C++
я умею писать консольные приложки на с++ в висуал студио мне нужно написать крестики-нолики на бесконечном поле чтобы Вы мне...

написать программу вычисления функции представленной бесконечным рядом чисел с точностью е=0.0001 - C++
составить программу которая расчитывает таблицу значений функции в указанном диапазоне чисел х0-хКонеч. с заданным шагом h . величины h,...

Функция с циклом - C++
Учусь писать на с++. В универе дали задание написать програмку, которая вычисляет сумму элементов матрицы фиксированного размера, лежащих...

Программа с циклом - C++
# include <iostream> # include <iomanip> # include <cmath> # include <conio.h> int main() {using namespace std; float x, xn,...

Проблемы с циклом while - C++
Подскажите пожалуйста: #include <stdio.h> int main() { int mas; int i=0; while(scanf("%d", &mas)!=EOF) ...

Проблемы с циклом!!! - C++
#include <iostream> #include <stdio.h> #include <stdlib.h> #include<iomanip> using namespace std; typedef struct { float...

работа с циклом for - C++
Ребят, я чот запутался с реализацией этой задачи http://www.cyberforum.ru/attachment.php?attachmentid=57132&stc=1&d=1294243087 как я...

Работа с циклом do while - C++
Здравствуйте! есть задача в которой используется метод прогонки с проверкой условия. я использовала следующий цикл: for(i=0;i<=N-1;i++) ...

Загвоздка с циклом for - C++
Вообщем смысл задачи: дан отрезок на оси "х" от "а" до "b" , и задан шаг на этом отрезке "h". Нужно используя оператор for, вывести в...

Последовательность.. с циклом do .. while - C++
Очень жесткое задание. вообще не могу понять как делать. Вычислить и вывести те члены последовательности, (x^3)/3, ...

Задача с циклом - C++
Здравствуйте. Начал осваивать язык С++. Возникла трудность с корректной записью логики задачи. Хочу услышать Ваши советы. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.06.2014, 00:38     Поток с бесконечным циклом #2
ваш взгляд есть, а поставленная задача где?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.06.2014, 00:50     Поток с бесконечным циклом #3
Цитата Сообщение от Bretbas Посмотреть сообщение
И как кстати мне завершить этот поток,кроме как выход из программы?
Как завершить бесконечный цикл в потоке? Отслеживать значение какой-либо переменной, которую можно изменять в основном потоке, отслеживать события (нажатие клавиш и пр.).
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
21.06.2014, 02:44     Поток с бесконечным циклом #4
Ждать с помощью condition_variable в цикле и прервать его когда придет оповещение для condition_variable.
Bretbas
189 / 48 / 7
Регистрация: 05.08.2013
Сообщений: 766
Завершенные тесты: 1
22.06.2014, 00:07  [ТС]     Поток с бесконечным циклом #5
у меня в любом исходе остается бесконечный цикл. Это слишком нежелательно, или все-таки можно иногда так делать?
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.06.2014, 00:29     Поток с бесконечным циклом #6
Цитата Сообщение от Bretbas Посмотреть сообщение
у меня в любом исходе остается бесконечный цикл. Это слишком нежелательно, или все-таки можно иногда так делать?
Вопрос не до конца понял. Что именно не желательно?
Попробую дать вот такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <mutex>
#include <condition_variable>
#include <thread>
#include <atomic>
#include <chrono>
 
std::condition_variable cv;
std::mutex cv_m;
std::atomic<int> flag{0};
 
void waits() {
    std::unique_lock<std::mutex> locker(cv_m);
    while(true) {
        if (!cv.wait_for(locker, std::chrono::milliseconds(10), []{return flag == 1;}))
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(400));
            std::cout << "Working into waits()...\n";
        }
        else {
            std::cout << "Work into waits() DONE!\n";
            break;
        }
    }
}
 
void do_something_else() {
    for (int i = 0; i < 10; ++i) {
        std::cout << "Work into do_something_else()...\n";
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    flag = 1;
    cv.notify_one();
}
 
int main()
{
    std::thread t(waits);
    do_something_else();
    t.join();
 
    return 0;
}
Yandex
Объявления
22.06.2014, 00:29     Поток с бесконечным циклом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru