Здравствуйте, gencoder, Вы писали:
g> Можно ли сделать в c++11 аналог Qt-класса, периодически запускающего некоторый метод класса или функцию action(), g> без использования библиотеки Qt и чтобы был кроссплатформенным?
Здравствуйте, gencoder, Вы писали:
G>Можно ли сделать в c++11 аналог Qt-класса, периодически запускающего некоторый метод класса или функцию action(), G>
G>timer = new QTimer(this);
G>connect(timer, SIGNAL(timeout()), this, SLOT(action()));
G>timer->start(1000);
G>
G>без использования библиотеки Qt и чтобы был кроссплатформенным?
без использования дополнительного потока — вряд ли... хоть это и невероятно неэффективное решение.
и стОит помнить, что калбяк будет зваться из другого потока, а не как в Qt.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: периодический вызов функции по таймеру в C++11
Здравствуйте, gencoder, Вы писали:
G>Можно ли сделать в c++11 аналог Qt-класса, периодически запускающего некоторый метод класса или функцию action(), G>
G>timer = new QTimer(this);
G>connect(timer, SIGNAL(timeout()), this, SLOT(action()));
G>timer->start(1000);
G>
G>без использования библиотеки Qt и чтобы был кроссплатформенным?
Можно использовать и в виде timer_thread (т.е. дополнительный поток, на котором будут запускаться события), так и в виде timer_manager (т.е. все операции выполняются на одном и том же потоке, но методы timer_manager-а нужно будет самостоятельно вручную вызывать).
Re[2]: периодический вызов функции по таймеру в C++11
Здравствуйте, niXman, Вы писали:
X>без использования дополнительного потока — вряд ли... хоть это и невероятно неэффективное решение.
Таймеров без использования дополнительного потока не бывает. Кто-то должен отсчитывать время и послать запрос, или поставить запрос в уже известную очередь, вроде виндового WM_TIMER. Или же нужна поддержка подобного от системы, в виде подобия прерываний, в линуксовом виде — сигналов. В яве используется именно поток и дерево ожиданий, а инженеров Sun, которые яву придумывали, нельзя назвать неграмотными.
Re: периодический вызов функции по таймеру в C++11
Здравствуйте, gencoder, Вы писали:
G>Можно ли сделать в c++11 аналог Qt-класса, периодически запускающего некоторый метод класса или функцию action(), G>
G>timer = new QTimer(this);
G>connect(timer, SIGNAL(timeout()), this, SLOT(action()));
G>timer->start(1000);
G>
G>без использования библиотеки Qt и чтобы был кроссплатформенным?
Здравствуйте, gencoder, Вы писали:
G>Можно ли сделать в c++11 аналог Qt-класса, периодически запускающего некоторый метод класса или функцию action(), G>
G>timer = new QTimer(this);
G>connect(timer, SIGNAL(timeout()), this, SLOT(action()));
G>timer->start(1000);
G>
G>без использования библиотеки Qt и чтобы был кроссплатформенным?
Чтобы это заработало в Qt вам так же надо вызвать QEventLoop::exec или его статический аналог у QCoreApplication.
Таймеры в Qt работают благодаря очереди сообщений, в том числе при многопоточном использовании.
Т.е. вам нужно сделать на С++ аналог очереди сообщений и цикла обработки сообщений и где-то его гонять.
Я думаю, если вы более точно опишите, что именно вам нужно в конечном счёте, то вам посоветуют что-то более подходящее.