Moved examples to eg/
[catagits/fcgi2.git] / perl / eg / threaded.pl
1 #!/usr/bin/perl
2
3 use FCGI;
4 use Thread;
5 use IO::Handle;
6
7 use constant THREAD_COUNT => 5;
8
9 sub doit {
10     my $k = shift;
11     my %env;
12     my $in = new IO::Handle;
13     my $out = new IO::Handle;
14     my $err = new IO::Handle;
15
16     my $request = FCGI::Request($in, $out, $err, \%env);
17
18     while ($request->Accept() >= 0) {
19         print $out
20            "Content-type: text/html\r\n",
21            "\r\n",
22            "<title>FastCGI Hello! (multi-threaded perl, fcgiapp library)</title>",
23            "<h1>FastCGI Hello! (multi-threaded perl, fcgiapp library)</h1>",
24            "Request counts for ", THREAD_COUNT ," threads ",
25            "running on host <i>$env{SERVER_NAME}</i><P><CODE>";
26
27         {
28             lock(@count);
29
30             ++$count[$k];
31
32             for(my $i = 0; $i < THREAD_COUNT; ++$i) {
33                 print $out $count[$i];
34                 print $out " ";
35             }
36         }
37         $request->Flush();
38         sleep(1);
39     }
40 }
41
42 for ($t = 1; $t < THREAD_COUNT; ++$t) {
43     new Thread \&doit, $t;
44 }
45 doit(0);