diff options
| author | Enrico Tassi | 2014-01-22 10:23:14 +0100 |
|---|---|---|
| committer | Enrico Tassi | 2014-01-26 14:20:52 +0100 |
| commit | ea17a2a371d0d791f439e0a4c6610819ecb6f9b6 (patch) | |
| tree | e7a91131f773efedbbcdb79d035b6c6d443b1e55 /lib/spawned.mli | |
| parent | 26b6134c3cd333d7fc78c665be5fd1394a546395 (diff) | |
Spawn: managed processes
The Spawn and Spawned modules factor the operation of spawning
a process. Both synchronous and asynchronous channels are supported.
Both threaded and glib like main loop models are supported. Still,
not all combinations are truly tested not equipped with a decent API:
only async + glib and sync + thread are, since these are the models we
use for coqide<->coqtop and coqtop<->worker respectively.
Diffstat (limited to 'lib/spawned.mli')
| -rw-r--r-- | lib/spawned.mli | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/spawned.mli b/lib/spawned.mli new file mode 100644 index 0000000000..bc5649a2fa --- /dev/null +++ b/lib/spawned.mli @@ -0,0 +1,26 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2012 *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) + +(* To link this file, threads are needed *) + +type chandescr = AnonPipe | Socket of string * int + +(* Argument parsing should set these *) +val main_channel : chandescr option ref +val control_channel : chandescr option ref + +(* Immediately after argument parsing one *must* call this *) +val init_channels : unit -> unit + +(* Once initialized, these are the channels to talk with our master *) +val get_channels : unit -> in_channel * out_channel + +(* In multi threaded environments on windows blocking calls do + prevent context switch. This seems a huge BUG, here a work around *) +val prepare_in_channel_for_thread_friendly_blocking_input : in_channel -> unit +val thread_friendly_blocking_input : in_channel -> string -> int -> int |
