我在尝试测试一个异步写入文件的日志模块...单元测试试图读取日志来确保写入的消息与预期匹配。然而,我发现即使我睡眠等待文件一段任意长度的时间,该模块的异步写入也直到单元测试完成后才到达文件。通过在aio_close旁边添加打印语句,我验证了文件直到最后才关闭。我该怎么做来测试这个问题?
#approximately the way this works:
aio_open($pathname,
$flags,
$mode,
sub
{
my $fh = shift;
aio_write($fh,
0,
length($log),
$log,
0,
sub
{
print "here";
aio_close($fh, sub {});
});
});
flush
会导致程序等待所有挂起的异步操作完成。在你的情况下,这包括执行aio_close
,最终清空输出缓冲区。 - mob