
A simple example - the following program directs the functions f(), g() and h() to be called on the background thread. // kublaikhan.cpp : basic test of DeferThread. // #include "deferthread.h" #include <iostream> // tasks for the worker thread /////////////////////////////////////////////////////////////// void f() {std::cout << "In Amsterdam" << std::endl;} void g() {std::cout << "Did Kublai Khan" << std::endl;} void h() {std::cout << "His stately pleasure tram decree" << std::endl; } /////////////////////////////////////////////////////////////// void thread_sleep(int seconds ) { boost::xtime delay; boost::xtime_get(&delay, boost::TIME_UTC ); delay.sec += seconds; boost::thread::sleep( delay ); } /////////////////////////////////////////////////////////////// void test_worker( defer::DeferThread& worker, const boost::function<void (void)>& func ) { // get the worker to call the function it its thread worker.Defer(func); thread_sleep(3); // arbitrary foreground work } /////////////////////////////////////////////////////////////// int main(int argc, char **argv) { // DeferThread extends DeferPoint // it executes requests on a single bacgkround thread defer::DeferThread worker; // sleep instead of meaningful foreground work thread_sleep(3); // do a variety of tasks in the background test_worker( worker, f ); test_worker( worker, g ); test_worker( worker, h ); thread_sleep(3); worker.Stop(true); // close down }