blob: c64850963629e8baa4634a297c26e5f9a660b946 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
use strict; use warnings; use threads; use Glib; use Queue;
my $q=Glib::Thread::Queue->new(); threads->create( sub{ print "sleeping\n"; sleep 2; print "sending boo\n"; $q->enqueue('boo'); sleep 2; print "inserting bar & foo\n"; $q->insert(0,'bar'); $q->insert(1,'foo'); print "signaling\n"; $q->signal(); print "signaling\n"; $q->signal(); sleep 2; print "sending quit"; $q->enqueue('quit'); }); my $loop=Glib::MainLoop->new(); $q->add_watch(sub{ print "waking up\n"; my $foo=$q->dequeue(); print "got $foo\n"; if ($foo eq 'quit') { print "quitting\n"; $loop->quit; } return Glib::SOURCE_CONTINUE; }, ); $loop->run;
|