Timeout de un método en C++ con Glib
Primera aproximación
#include <glib.h>
#include <iostream>
using namespace std;
class A {
public:
void tick() {
cout << "tick" << endl;
}
};
gboolean adaptor(gpointer p) {
(static_cast<A*>(p))->tick();
return TRUE;
}
int main() {
A a;
g_timeout_add(500, adaptor, &a);
g_main_loop_run(g_main_loop_new(NULL, TRUE));
}
Si el fichero se llama method_timeout.cc, se puede compilar con:
$ make method_timeout CXXFLAGS="$(pkg-config --cflags glib-2.0)" LDLIBS="$(pkg-config --libs glib-2.0)"Utilizando un método de clase como adaptador
class A {
public:
void tick() {
cout << "tick" << endl;
}
static gboolean tick_adaptor(gpointer p) {
(static_cast<A*>(p))->tick();
return TRUE;
}
};
int main() {
A a;
g_timeout_add(500, A::tick_adaptor, &a);
g_main_loop_run(g_main_loop_new(NULL, TRUE));
}
Referencias
[ show comments ]
blog comments powered by Disqus