Re: ocaml et les threads

From: Xavier Leroy (Xavier.Leroy@inria.fr)
Date: Thu Apr 03 1997 - 17:28:38 MET DST


From: Xavier Leroy <Xavier.Leroy@inria.fr>
Message-Id: <199704031528.RAA24208@pauillac.inria.fr>
Subject: Re: ocaml et les threads
In-Reply-To: <199704021634.SAA31253@yeti.didac-mip.fr> from Olivier Bouyssou at "Apr 2, 97 06:34:36 pm"
To: bouyssou@didac-mip.fr
Date: Thu, 3 Apr 1997 17:28:38 +0200 (MET DST)

[English summary: yes, system threads might work with native-code
OCaml programs. It remains to be done, though, and might not be very
useful, since multiprocessors are not supported anyway.]

> Serait-il possible d'utiliser la "threads library" avec des programmes
> en code natif ? En fait ce qui me fait poser cette question c'est la
> presence du fichier otherlibs/systhreads/posix.c dans les sources de ocam=
l.
> Plus précisément, vu que j'utilise Linux comme environnement, serait-=
il
> possible d'utiliser la lib LinuxThreads écrite par Xavier Leroy ?

J'ai en effet deux casquettes en matiere de threads...

C'est exact, il n'y a pas d'impossibilite de principe a combiner le
compilateur natif ocamlopt et la bibliotheque de "threads" qui se
trouve dans otherlibs/systhreads.

Au contraire de la bibliotheque otherlibs/threads, qui repose sur des
commutations de contexte au niveau de l'interprete de bytecode, la
bibliotheque otherlibs/systhreads s'appuie sur des threads fournis par
le systeme d'exploitation (e.g. les threads Win32 ou POSIX). Elle
n'est donc pas liee a l'utilisation d'un interprete de bytecode.

Quelques problemes restent a regler pur la rendre compatible avec
ocamlopt, en particulier au niveau du demarrage d'un nouveau thread.
Aussi, la bibliotheque de thread utilise un signal d'horloge pour
"preempter" les threads au bout d'un certain temps; comme les signaux
en ocamlopt sont testes moins frequemment qu'en ocamlc, on peut avoir
des situations ou un thread qui calcule beaucoup sans allouer du tout
bloque tous les autres threads.

La question qui reste: est-ce vraiment utile? Par manque d'un GC
concurrent, les deux bibliotheques de threads ne permettent pas
d'exploiter plus d'un processeur, et ne sont donc utiles que pour
faire des entrees/sorties en parallele. Dans ce type d'utilisation, le
temps de calcul pur est faible et il n'y a pas de raison forte
d'utiliser ocamlopt plutot que ocamlc.

- Xavier Leroy



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:10 MET