Browse thread
Re: [Caml-list] native threads not parallel?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | shivkumar chandrasekaran <shiv@e...> |
| Subject: | Re: [Caml-list] native threads not parallel? |
On Thu, 2003-02-20 at 16:15, Jacques Garrigue wrote: > From: Shivkumar Chandrasekaran <shiv@ece.ucsb.edu> > > > not. But I seem to have the same problem as discussed by Markus Mottl > > (see attachment below) on Mac OS X 10.2.4 on a dual processor G4 > > machine. An earlier message in that thread mentioned that there was no > > such problem on dual-processor Linux machines. > > Let's answer again, since this is a frequent question: ocaml threads > do not not support parrallelism. Only one ocaml thread will run at a > time, independently of the number of processors, and this on any > architecture/OS. > 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 understand the dangers about calling back into caml from the bracketed C-code. The preceding thread I cited discussed this as well, as you mentioned. Thanks, --shiv-- > > > From :Markus Mottl < mottl@miss.wu-wien.ac.at > > > > The only thing I can imagine is that OCaml somehow changes > > > scheduling so that the threads cannot run in parallel anymore, even if > > > "enter_blocking_section" is used. Is this possible? Or am I just making > > > some stupid mistake? > > enter_blocking_section only happens in C code, and is followed by a > leave_blocking_section before returning to caml code. Since the > leave_blocking_section reacquires the lock, no more than one ocaml > thread can run simultaneously. > Easy way to crash the runtime: call a caml callback immediately after > an enter_blocking_section. The two caml threads will start to > allocate simultaneously on the same heap, without any locking... > > 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 -- Professor Shivkumar Chandrasekaran || phn: 805.893.7542 Electrical & Computer Engineering Department || fax: 805.893.3262 University of California || Office: 3109, Eng. I Santa Barbara, CA 93106-9560 || email: shiv@ece.ucsb.edu ------------------- 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