Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.06.2014, 09:37     Многопоточность, выход из бесконечного цикла c++11
Нет.
1. Стоп может быть предназначен для остановки только действующего потока, тогда надо исключить сам вызов, обработчик же события в интерфейсе пользователя должен отработать ошибку и самостоятельно обойти вызов останавливающей функции в API. При этом он может как проглотить ошибку, если симулирует достаточно тупое устройство, или выдать сообщение об ошибке через пользовательский интерфейс. Но не исключение, оно должно бросаться, только если вызывающая программа уже передала что нибудь некорректное, при нехватке ресурсов и при ошибке в девайсе, например, сказано достичь некоторой скорости, а в процессе разгона вдруг оказалось, что в баке нет бензина. В остальных случаях нет нужды передавать сигнал об ошибке через несколько уровней, она регистрируестя в интерфейсе пользователя и там же генерится сообщение. По-старому.
2. Или же стоп может иметь два назначения:
2.1. Остановка действующего потока.
2.2. Предотвращение старта потока.
Это соответствует случаю тормоза в автомобиле, который может быть заведён и на склоне горки, при этом со стояночного тормоза он должен быть уже снят, а назад не покатиться. Тогда тормоз и нажимают для предотвращения начала движения. Но в автомобиле тормоз отменяется отпусканием той же педали. Это связано с тем, что автомобиль - штука предельно тупая, это самобеглый заменитель кареты и чего более, сколь бы современными двигателями и электронным управлением он ни оснащался. Поэтому команда длительного действия должна продолжать подаваться. Если ты отпустил тормоз, то заведя двигатель и отпустив сцепление заставишь машину двигаться, если держишь, ехать она не должна. На компьютере бывают залипающие экранные кнопки и раздельные горячие клавиши для команды и её отмены, а в текстовом интерфейсе команда, способная что то предотвратить, отменяется только другой явной командой. При этом автомобиль слишком туп, чтоб сказать, что нажатие тормоза для предотвращения движения оказалось излишним, или чтоб исключить применение педали тормоза для предотвращения качения с горки. Компьютер же, если он не симулирует что то столь же тупое, как автомобиль, может ограничить команду единственным назначением и в некоторых случаях предотвратить саму подачу команды, а когда это не возможно, сообщить пользователю об ошибочности его действий и обойти дальнейшую передачу команды внутри программы, то есть главный цикл отработает строку "stop" и состояние, выдаст сообщение, а функцию stop() не вызовет. Но когда такое поведение не требуется, комп может вести себя подобно автомобилю, с той обязательной разницей, что отмена команды API не заключается в прекращении её подачи, а требует отдельного вызова. При эмуляции же чего то столь же тупого, как автомобиль, комп должен вести себя подобно симулируемому объекту с тем нюансом, что отмена команды API требует отдельного вызова. Отпусканию педали тормоза соответствует отдельный вызов функции BreakUp() после функции Stop(), вот после этого поток уже можно запускать вызовом функции Start(). Причём, BreakUp() уже может вызваться вне зависимости от значения флага, в том числе, для отжатия стопора, зажатого мусорным флагом и не будет ошибкой в случае вызова при уже отжатом, в том числе, дефолтно, стопоре: ведь он только говорит, что после него запускать можно, но не требует немедленного запуска и, уж конечно, ничего не предотвращает. Хотя можно добавить проверку состояния и перед вызовом этой функции, но это уже на усмотрение. Может она должна включить электромагнит с втяжным якорем, или завезти насос для физического отжатия тормоза? Тогда опрос датчика состояния тормоза и обход вызова может сэкономить энергию, а можно опрос состояния и обход подачи управления на пускатель внести в саму функцию.
 
Текущее время: 02:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru