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