% perl /tmp/test.pl /etc/passwd (in cleanup) IO::AIO: expected a working directory object as returned by aio_wd during global destruction. (in cleanup) IO::AIO: expected a working directory object as returned by aio_wd during global destruction. direct call: [65024][73604][33188][1][0][0][0][2235][1319839401][1319839401][1319839401][1024][6] thread call: [65024][73604][33188][1][0][0][0][2235][1319839401][1319839401][1319839401][1024][6] #### #!/usr/bin/env perl use strict; use diagnostics; use threads; use IO::AIO; use POSIX qw/EXIT_SUCCESS/; my $file = shift; my @res1 = mylstat($file); my @res2 = threads->create({'context' => 'list'}, 'mylstat', $file)->join(); print 'direct call: ['.join('][', @res1) . "]\n"; print 'thread call: ['.join('][', @res2) . "]\n"; exit(EXIT_SUCCESS); sub mylstat { my @lstat; aio_lstat shift, sub {$_[0] and return; @lstat = lstat(_);}; IO::AIO::flush; return(@lstat); }