Version française
Home     About     Download     Resources     Contact us    
Browse thread
ocaml et les threads
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: Re: ocaml et les threads
[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 ocaml.
> 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