#!/usr/bin/perl -w use Glib; Glib::Object->set_threadsafe (1); use threads; sub callback { print "callback on ".threads->self->tid()."\n"; 0; } my $loop = Glib::MainLoop->new; sub background { sleep 1; print "queuing callback on ".threads->self->tid()."\n"; Glib::Idle->add (\&callback); sleep 1; print "queuing callback on ".threads->self->tid()."\n"; Glib::Idle->add (\&callback); sleep 1; print "queuing mainloop kill on ".threads->self->tid()."\n"; Glib::Idle->add (sub { print "killing mainloop on ".threads->self->tid()."\n"; $loop->quit; 0; }); } my $thread = threads->create("background"); print "running mainloop on ".threads->self->tid()."\n"; $loop->run; $thread->join;