Sys' project
OCaml
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
NetWatch
Seq
Socket
Telegraph
docs
pi
.gitignore
KPN.ml
Lib.ml
Makefile
Pipe.ml
README.markdown
Seq.mlpack
Socket.mlpack
Th.ml
_tags
example.ml
example_sieve.ml
kahn.ml
monad.ml
operators.ml

README.markdown

Implementations of Kahn process networks

Using the OCaml programming language. (Requires version >= 4.00)

lib.ml contains the common interface for all implementations.

The following implementations will eventually be available :

  • Thread-based (using system threads blocked by the OCaml runtime)
  • With Unix forks and pipes
  • Sequential implementations using continuation-based control flow
    • with a concurrency monad (cf. the functional pearl paper)
    • with coroutines
  • Using network sockets and client/server architecture
    • local thread communicating over sockets on localhost
    • over the network !

They're all done except the very last one.

Note: the sequential implementations might block indefinitely on a process executing a non-terminating and seemingly atomic (from the POV of the concurrency handling code) action; you have to write code that cooperates well! Other solutions, which use the OS's preemptive multitasking facilities, do not have this flaw, but might be slower.