haskell - 如何在 Haskell 中使用 aio_read(3)?
问题描述
在 Linux 中,可以通过从 C调用aio_read(3)来异步读取文件。 sigevent结构是参数之一,并且可以指定不同的选项以在操作完成时收到通知。让我总结一下:
SIGEV_NONE没有通知。
可以使用 aio_error(3) 检查状态。该操作是异步的,但必须在某个循环中忙于等待完成,这不是我想要的。
SIGEV_SIGNAL向进程发出信号。
理论上,这可以通过通过System.Posix.Signals安装信号处理程序在 Haskell 中捕获。但是有一个问题: 的 API
SignalInfo
不包括si_value
让我们传达有关读取请求的一些细节的关键,例如StaticPtr
. 这是不幸的。根据文档,SIGEV_THREAD这将启动一个新线程。
我不知道如何在 Haskell 中表示这一点。我最好的猜测是
IO ()
采取行动。我不确定如何编写随附的本机代码。
我如何aio_read
在 Haskell 中使用或类似的东西?我可能不会在这个(或图书馆)上使用 FFI。
解决方案
推荐阅读
- c# - C# WPF 如何根据视图模型中行的内容添加列
- javascript - bootstrap-select 显示 allSelectedText 如果选择所有选项
- python - 使用函数追加行不会保存行
- c# - Unity Facebook SDK,从 API 的“apprequests”中检索数据
- css - 从属性/地图列表中获取价值
- php - 从空值laravel 5.7创建默认对象
- ios - 我想获取 currentUser 的 userId 并将其作为孩子添加到他们所有朋友的数据中 - 在 Firebase 中使用 Swift
- java - 在 kotlin 中获取两个 ISO 格式时间之间的分钟数
- angularjs - 如何使用 Selenium 和 Python 从 html 中抓取文本 Alpha Esports
- sql-server - SQL AlwaysOn - 如果您不将其用作集群/故障转移怎么办?