如何在Haskell中使用aio_read(3)?

时间:2018-10-21 00:38:05

标签: haskell asynchronous io

在Linux中,可以通过从C调用aio_read(3)来异步读取文件。sigevent结构是参数之一,可以指定不同的选项,以便在操作时通知用户做完了。让我总结一下:

  • SIGEV_NONE 没有通知。

    可以使用aio_error(3)检查状态。该操作是异步的,但必须在某些循环中忙于等待完成,这不是我想要的。

  • SIGEV_SIGNAL 信号出现在进程中。

    理论上,可以通过System.Posix.Signals安装信号处理程序来在Haskell中发现问题。但是,存在一个问题:SignalInfo的API不包含关键的si_value,让我们来交流一些有关读取请求的细节,例如StaticPtr。这很不幸。

  • 根据文档,
  • SIGEV_THREAD 将启动一个新线程。

    我不知道该如何在Haskell中表示。我最好的猜测是一个IO ()动作。我不确定如何编写随附的本机代码。


如何在Haskell中使用aio_read或类似的东西?我可能不会在此(或库)上使用FFI。

0 个答案:

没有答案