小编ama*_*ano的帖子

为什么我无法迁移 unix 套接字的每当块中的供应?

服务器

#!/usr/bin/env raku

unlink "/run/user/1000/sock";
my $socket = IO::Socket::Async.listen-path("/run/user/1000/sock");

react {
  my $timerSupplier = Supplier.new;

  whenever $timerSupplier.Supply.migrate {
    say "3 second interval: ", $_;
  }
  $timerSupplier.emit(Supply.interval(3));

  whenever $socket -> $conn {
    $timerSupplier.emit(Supply.interval(3));
    say "\"", $_.Supply.lines.Channel.receive, "\"";
    $conn.close;
  }
}

Run Code Online (Sandbox Code Playgroud)

客户

#!/usr/bin/env raku

my $sock = IO::Socket::Async.connect-path("/run/user/1000/sock").result;
await $sock.print("ok\n");
Run Code Online (Sandbox Code Playgroud)

如果我先执行服务器,然后执行客户端,则会出现以下异常。

Unhandled exception in code scheduled on thread 8
Can only cancel an AsyncTask handle
  in block  at ./server line 16
Run Code Online (Sandbox Code Playgroud)

谁能告诉我有什么问题吗?

raku

10
推荐指数
2
解决办法
137
查看次数

标签 统计

raku ×1