Skip to content

Add a timeout function to the standard library #5908

@vicuna

Description

@vicuna

Original bug ID: 5908
Reporter: smimram
Status: resolved (set by @xavierleroy on 2013-01-28T08:56:37Z)
Resolution: suspended
Priority: normal
Severity: feature
Category: standard library
Monitored by: @dbuenzli

Bug description

Hi,

I have tried to program a "timeout" function in a portable way but did not succeed with the current standard library. Since this is quite a commonly used idiom, it might be worth adding such a function to the standard library.

I wanted a "timeout" function of type:

float -> ('a -> 'b) -> 'a -> 'b option

which takes a maximum number n of seconds to run, a function f, an argument x, and returns Some (f x) if the computation ends before n seconds and None otherwise. I have tried the following:

  • the simple implementation using Unix.setitimer / Unix.alarm does not work under windows because of signals implementation
  • the caml-list suggested using Gc.create_alarm which is portable, but really imprecise (we cannot predict when a gc will occur)
  • I could have used threads and Thread.kill, but unfortunately Thread.kill is not implemented with the native compiler
  • this could be achieved with monadic threads, but I would rather not change the structure of my whole program

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions