caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jacques Garrigue <garrigue@kurims.kyoto-u.ac.jp>
To: shiv@ece.ucsb.edu
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] native threads not parallel?
Date: Sat, 22 Feb 2003 00:11:42 +0900	[thread overview]
Message-ID: <20030222001142G.garrigue@kurims.kyoto-u.ac.jp> (raw)
In-Reply-To: <1045801453.1601.8.camel@cbshost-12-107-11-69.sbcox.net>

From: shivkumar chandrasekaran <shiv@ece.ucsb.edu>
> Sorry, but let me ask again. I *know* that ocaml threads cannot use
> multiple processors. That was not the subject of the thread I cited. I
> should have been clearer.
>
> If I am recalling correctly, Xavier has mentioned before that in
> *native-code* (see subject) ocaml will allow C code to run in parallel.
> Markus' email was precisely on that point as was mine. I have C code
> that I would like to execute on a processor different from the ocaml
> thread one. Apparently, as I gather from the cited email of Markus
> Mottl, this did occur (at least on some dual processor Linux machines)
> when the corresponding C code was bracketed with "enter/leaving_blocking
> section ()" calls, and, *I assume*, calling the C-code from a separate
> ocaml thread using Thread.create.

I see, after rereading carefully the original mail, I could understand
what this is about.

IIRC, the distinction is not between native code and bytecode, but
between native threads and caml threads. You can use native threads in
bytecode, and it should work also (but I might be wrong).

About the problem Markus is describing, and if he is using
Thread.create as you suggest, I may see a cause.  Seeing that the code
for caml_thread_new in posix.c contains no enter_blocking_section, if
you create a thread with Thread.create, it will immediately block
trying to get the caml mutex. It will get it eventually from the main
caml thread through a yield, but a clever scheduler will schedule this
thread on the same processor (it starts just when the previous one
stops). As Markus says, after a long time the scheduler may realize
this choice was wrong and change the processor, but this is scheduler
dependent.

I may be utterly wrong in my inference, but if this is right, a better
solution would be to explicitely start the thread with pthread_start
from the C side.

Jacques Garrigue
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2003-02-21 15:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-20 23:10 Shivkumar Chandrasekaran
2003-02-21  0:15 ` Jacques Garrigue
2003-02-21  4:24   ` shivkumar chandrasekaran
2003-02-21 10:43     ` Markus Mottl
2003-02-21 15:11     ` Jacques Garrigue [this message]
2003-02-21 17:57       ` Markus Mottl
2003-02-24 17:39       ` Shivkumar Chandrasekaran
2003-02-21  0:32 ` Chris Uzdavinis
2003-02-21  1:56   ` james woodyatt
2003-02-21  4:43   ` shivkumar chandrasekaran
  -- strict thread matches above, loose matches on Subject: below --
2001-06-15 16:49 Markus Mottl
2001-06-15 17:10 ` Xavier Leroy
2001-06-15 18:42   ` Markus Mottl
2001-06-15 21:33     ` Markus Mottl
2001-06-21 13:43       ` Markus Mottl

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030222001142G.garrigue@kurims.kyoto-u.ac.jp \
    --to=garrigue@kurims.kyoto-u.ac.jp \
    --cc=caml-list@inria.fr \
    --cc=shiv@ece.ucsb.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).