我正在使用 Ocaml 中的 TCP/IP 套接字开发一个协议,并且我有兴趣实现事件驱动的方法。基本上,我想制作事件处理函数,当套接字接收到新数据或关闭或打开时调用。
是否可以在不使用多个线程手动实现的情况下在 Ocaml 中进行操作?
谢谢,
我正在使用 Ocaml 中的 TCP/IP 套接字开发一个协议,并且我有兴趣实现事件驱动的方法。基本上,我想制作事件处理函数,当套接字接收到新数据或关闭或打开时调用。
是否可以在不使用多个线程手动实现的情况下在 Ocaml 中进行操作?
谢谢,
是的。创建一个循环并用于Unix.select
等待 fds 上的事件。您必须将套接字设置为非阻塞模式,Unix.set_nonblock
以便您的读写不会阻塞,并且如果没有数据要读/写,您可以返回您的选择(因为即使select
返回您的 fds 是可读的/可写并不意味着对它们的读/写不会阻塞)。