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

Многопоточность, выход из бесконечного цикла c++11 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислите сумму элементов целочисленной матрицы, ниже побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread1198329.html
Дана целочисленная матрица. Вычислите сумму элементов матрицы, ниже побочной диагонали. Выведите на экран исходный массив и результат вычисления.
C++ Ввести массив из 10-ти элементов. Вычислить сумму элементов с нечетными номерами Вводиться массив из 10-ти элементов. Вывести эти элементы на экран. Вычислите сумму элементов с нечетными номерами. Выведите адрес начала массива, адрес и значение результата или сообщение об отсутствие этих элементов. http://www.cyberforum.ru/cpp-beginners/thread1198325.html
Запись\чтение из файла C++
#include <iostream> #include <string> #include <locale.h> #include <list> using namespace std; class A { private: int price; string name;
C++ Найти среднее геометрическое нечетных элементов массива
Как в C++ Найти cреднее геометрическое нечетных элементов массива?
C++ Пожалуйста подскажите, что делает программа? http://www.cyberforum.ru/cpp-beginners/thread1198290.html
public: A(); A(const A &); ~A(); friend A operator+(A a, B b); friend void display(A a); }; class B { int *arr;
C++ Шаблонный класс, не работает с френд функцией Переделал программу под шаблонный класс, все методы работают справно когда задаешь тип. Да вот только проблема с френд функцией. Светит ошибку на выделение динамической памяти в мейне Sample*aa=new int ; Вот код: #include <iostream> #include <math.h> using namespace std; template <class Data> class Sample //øàáëîííûé êëàññ âûáîðêà { int n; подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2014, 16:15     Многопоточность, выход из бесконечного цикла c++11
Цитата Сообщение от taras atavin Посмотреть сообщение
А если флаг инициируется во вторичном потоке, то надо исключить вызов stop() до завершения первого шага цикла во вторичном потоке.
Хорошо, давайте вот такой код (инициализация _stopCycle будет происходить при создании объекта в основном потоке):
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class SomeClass
{
    CRITICAL_SECTION gCS;
    volatile bool _stopCycle;
public:
    SomeClass()
    {
        InitializeCriticalSection(&gCS);
        _stopCycle = true;
 
    }
 
    ~SomeClass()
    {
        DeleteCriticalSection(&gCS);
    }
 
    void inifiniteWhile()   {
        if (_stopCycle)
        {
            EnterCriticalSection(&gCS);
            _stopCycle = false;
            LeaveCriticalSection(&gCS);
        }
        while (!_stopCycle)
        {
            cout << "inifiniteWhile" << endl;
        }
    }
 
    void stop() {
        if (!_stopCycle)
        {
            EnterCriticalSection(&gCS);
            _stopCycle = true;
            LeaveCriticalSection(&gCS);
        }
    }
};
 
int main(int argv, char* argc[])
{
    SomeClass obj;
    thread someThread(&SomeClass::inifiniteWhile, &obj);
    someThread.detach();
 
    while(true)
    {
        if(true)
        {
            obj.stop();
            break;
        }
    }
 
    system("pause");
    
    return 0;
}
Зацикливание. Если добавить паузу в основном потоке, зацикливания нет.
 
Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru