jdd has asked for the wisdom of the Perl Monks concerning the following question:
the script itself is% 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 r +eturned by aio_wd during global destruction. direct call: [65024][73604][33188][1][0][0][0][2235][1319839401][13198 +39401][1319839401][1024][6] thread call: [65024][73604][33188][1][0][0][0][2235][1319839401][13198 +39401][1319839401][1024][6]
and the IO::AIO warning appears only if I call within thread, not in the direct call version.#!/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)->j +oin(); 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); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: IO::AIO and threads
by BrowserUk (Patriarch) on Dec 08, 2011 at 19:46 UTC |