From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA25258 for caml-redistribution; Thu, 3 Apr 1997 18:20:34 +0200 (MET DST) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id RAA24212 for ; Thu, 3 Apr 1997 17:28:40 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.7.6/8.7.3) with ESMTP id RAA04140; Thu, 3 Apr 1997 17:28:39 +0200 (MET DST) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id RAA24208; Thu, 3 Apr 1997 17:28:39 +0200 (MET DST) From: Xavier Leroy 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) Cc: caml-list@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sender: weis [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