11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
1

Как заставить прогу на с++ ждать новые записи из БД

05.07.2011, 12:09. Показов 1670. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно чтобы прога на с++ ждала новых записей в БД
и если они поступят производила с ними кое какие действия
Вопрос в том как именно прога должна ждать эти записи

сейчас додумался только до того чтобы сделать вечный цикл
с помощью оператора goto и поставить задержку в цикле на пару секунд с помощью sleep

какие еще есть варианты решения моей проблемы ведь везде пишут что использование goto плохо ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2011, 12:09
Ответы с готовыми решениями:

Как заставить поток ждать в некоторых ситуациях
Есть такой сценарий приложения: Приложение до запуска TCP кеширует данные из MySQL в...

Как заставить цикл ждать ?
Есть массив времён которые обрабатываются в цикле. В теле цикла запускается таймер который по...

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

Семафоры (как заставить клиента ждать?)
1 программа (сервер): создаем разделяемую память и записываем 12345.6789 2 программа (клиент):...

13
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 12:15 2
Зачем здесь цикл вообще...
Поставить cin.get() например, и прога будет ждать, пока что-нибудь не введут.
Метки здесь ни к чему, но иногда их можно использовать. Вообще их стали считать плохим стилем после того, как их закритиковал Дейкстра =)
0
Заблокирован
05.07.2011, 12:17 3
sleep() то зачем делать?
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:19 4
Цитата Сообщение от nill Посмотреть сообщение
сделать вечный цикл с помощью оператора goto
А делать вечный цикл с помощью операторов цикла уже не кошерно?
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
05.07.2011, 12:22  [ТС] 5
diagon,
кто будет вводить ? прога должна работать полностью автоматически


Bers,
Чтобы не долбилась к базе данных все время


mimicria,
А это как можно пример? и вообще идея с вечным циклом сама по себе правильная ?
0
Заблокирован
05.07.2011, 12:24 6
diagon, вот такой вопрос к вам:

Можно ли как нибудь сопоставлять потокам что нибудь своё?

Например, объявить поток ввода/вывода где нибудь. Запиндюрить туда что нибудь своё (объект какой нибудь)

А потом, где-то совсем другом месте, на хз каком то уровне абстракции вытащить из этого потока запиндюренный объект?

Интересует конкретно, как при помощи потоков осуществлять транспортировку данных из одного слоя абстракции (а ещё лучше - из одного процесса) в совершенно другой.
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:28 7
Цитата Сообщение от nill Посмотреть сообщение
А это как можно пример?
while (условие) { действия }
Цитата Сообщение от nill Посмотреть сообщение
и вообще идея с вечным циклом сама по себе правильная ?
Поскольку я чаще всего пишу на BCB, я бы вместо цикла использовал таймер
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 12:29 8
Цитата Сообщение от nill Посмотреть сообщение
кто будет вводить ? прога должна работать полностью автоматически
А как данные в бд будут появляться? Какая среда программирования вообще?

Bers, хм... никогда не интересовался. И вообще, если вы считаете меня экспертом, то вы ошибаетесь =)
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
05.07.2011, 12:31  [ТС] 9
mimicria,
что такое таймер ?
можно пример

Добавлено через 1 минуту
diagon,
данные в бд будут появляться от другой проги в которую уже вводят руками
среда программирования VS2008
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
05.07.2011, 12:37 10
Цитата Сообщение от nill Посмотреть сообщение
что такое таймер ?
можно пример
Использование таймера
1
Заблокирован
05.07.2011, 12:49 11
Цитата Сообщение от diagon Посмотреть сообщение
Bers, хм... никогда не интересовался. И вообще, если вы считаете меня экспертом, то вы ошибаетесь =)
Просто я знаю, что можно))
Но я нигде не смог найти информацию. Во всех книгах о потоках пишут примерно одинаково, и на уровне новичка - считать строку, вывести строку в консоли....

Где бы вот найти материал по углубленному изучению потоков...
0
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 12:58 12
Цитата Сообщение от nill Посмотреть сообщение
Нужно чтобы прога на с++ ждала новых записей в БД
Для того чтобы твоя прога ждала новых записей ей нужно уведомление от БД(шутка) или от другой программы если она находиться на одной машине то через файл отображаемый на память общаться процессы могут если в локалке то другой способ нужен. Или придёться постояно конектиться к базе, для этого лучше в базе завести таблицу с одним столбцом тип дата - последнего обновления с другой программы когда в ручную данные вводишь то в это поле делаешь обновление, а та прога которая ждёт проверяет это поле с датой через ну где-то 10-30 секунд на твоё усмотрение, сравниваешь дату со своей считанной датой с предыдущего запроса если дата обновилась то начинаешь что нибудь делать с БД.
C++
1
2
3
4
5
6
while(1) {
 
   ...  // тут код
 
   Sleep(15000);  // 15  - секунд
}
Вообще что за БД, триггером нельзя обойтись или тебе для внешнего пользования нужны данные с БД.
1
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
05.07.2011, 19:12  [ТС] 13
xAtom,
БД Postgres
почитал про триггер

как бы он, если правильно понял, делает что то внутри БД

А мне надо чтобы после того как поступят новые данные в БД, с++ прога которая их ждет произвела кое какие расчеты и записала результат в БД
думаю тут триггер не поможет ?
0
Заблокирован
05.07.2011, 19:46 14
я конечно могу ошибаться, потому что для меня это неизученная область (я просто не сталкивался с подобными задачами), но возможно вам стоит посмотреть в сторону <signal.h>

И я даже предлагаю вам ознакомится с материалом по этой ссылочке:
http://icmp.ru/man/MAN/SIGNAL.htm

Добавлено через 8 минут
о кстати, на викки есть неплохое описание

http://ru.wikipedia.org/wiki/Signal.h
0
05.07.2011, 19:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2011, 19:46
Помогаю со студенческими работами здесь

Как заставить браузер не ждать ответа?
Суть такова... Принимаю POST, а теперь браузер надо послать на три веселые буквы и выполнять дальше...

Как заставить сервера ждать? Java Sockets
Как после отключение последнего клиента заставить сервера ждать новых подключений и не отключиться?

Как заставить foreach ждать нажатия кнопки для продолжения?
У меня этим циклом идет перебор объектов ArrayList, на каждой итерации вызывается метод с...

Как заставить один поток ждать, пока работает другой
Здравствуйте, стоит такая задача: есть public static bool forks = new bool;// false - свободна...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru