Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ocaml暂停Unix选择_Ocaml_Pause - Fatal编程技术网

Ocaml暂停Unix选择

Ocaml暂停Unix选择,ocaml,pause,Ocaml,Pause,我想做一个函数,可以使暂停时间少于1秒。 所以我做了这个函数: let pause(n:float)= Unix.select [] [] [] n ;; 我是这样用的: ignore(pause(0.1)); 顶层会向我返回以下错误: Exception: Unix.Unix_error (Unix.EINTR, "select", ""). 我该怎么办 另外,我也尝试过使用线程延迟,但我有同样的错误 这意味着在调用select的过程中向您的程序发送了一个信号 假设您使用的是OCaml

我想做一个函数,可以使暂停时间少于1秒。 所以我做了这个函数:

let pause(n:float)=
Unix.select [] [] [] n
;;
我是这样用的:

ignore(pause(0.1));
顶层会向我返回以下错误:

Exception: Unix.Unix_error (Unix.EINTR, "select", "").
我该怎么办


另外,我也尝试过使用
线程延迟
,但我有同样的错误

这意味着在调用
select
的过程中向您的程序发送了一个信号

假设您使用的是OCaml 4.03或更高版本,则可以使用
Unix.sleepf
函数,该函数的功能完全符合您的预期:

# Unix.sleepf;;
- : float -> unit = <fun>

请注意,这不是真正的线程安全,并且会与
SIGALRM
的其他用法冲突。我强烈建议您切换到最新版本的OCaml。

这意味着在调用
选择
的过程中向您的程序发送了一个信号

假设您使用的是OCaml 4.03或更高版本,则可以使用
Unix.sleepf
函数,该函数的功能完全符合您的预期:

# Unix.sleepf;;
- : float -> unit = <fun>

请注意,这不是真正的线程安全,并且会与
SIGALRM
的其他用法冲突。我强烈建议您切换到最新版本的OCaml。

我目前正在使用OCaml 4.02.3如何升级到4.03?具体取决于,您是在什么系统上安装的?您首先是如何安装OCaml的?我正在使用xfce4,我使用Opam安装OCaml,我想您一定也有一个旧版本的Opam:)
Opam开关
并且您都已设置好。非常抱歉,我是这个环境的新手。。它返回我:“4.03.0”不是有效的编译器。。。我应该写什么?我目前正在使用Ocaml 4.02.3如何升级到4.03?具体取决于,您是在什么系统上安装的?您首先是如何安装OCaml的?我正在使用xfce4,我使用Opam安装OCaml,我想您一定也有一个旧版本的Opam:)
Opam开关
并且您都已设置好。非常抱歉,我是这个环境的新手。。它返回我:“4.03.0”不是有效的编译器。。。我应该写什么?