#!/usr/bin/perl -- use strict; use warnings; use threads; use Thread::Queue; my $qin = Thread::Queue->new(); my $qout = Thread::Queue->new(); my $guithread = threads->create( sub { require MyApp::GUI; ## MyApp/GUI.pm MyApp::GUI::WorkQ(@_); ## uses timer to check on queue }, $qin, $qout, ); my $dbithread = threads->create( sub { require MyApp::DBFetch; ## MyApp/DBFetch.pm MyApp::DBFetch::WorkQ(@_); }, $qin, $qout, ); $guithread->join; ## wait for gui to finish __END__