Browse thread
[Caml-list] Why systhreads?
[
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: | Sven Luther <luther@d...> |
| Subject: | Re: [Caml-list] Why systhreads? |
On Tue, Nov 26, 2002 at 10:02:54AM +0100, Xavier Leroy wrote: > Blair Zajac wrote: > > > To summarize, for (2) system threads are required and and you can't > > prevent blocking with user level threads easily or at all. For (3), > > making the Ocaml system support SMP is "Too complex; too hard to > > debug" and SMP boxes aren't all that popular. > > Aren't these contradictory statements? > > > > For Ocaml to support a Ocaml program to have one thread to block on a > > system call and to allow other threads to continue, doesn't this support > > SMP? Does Ocaml support this? > > No to the first question. Yes to the second. > > By "supporting SMP", I mean having several threads executing Caml code > in parallel, thus using the Caml runtime system in a concurrent fashion. > This is the hard part. > > In the current implementation of systhreads, the Caml executor and > runtime system is one big critical section: at most one thread can > execute Caml code at a given time, but arbitrarily many other threads > can be blocked on I/O (and thus isn't calling the Caml runtime system). > Each thread leaves the critical section before calling a potentially > blocking I/O operation, and re-enters it when the I/O completes. In the case i have a multi-threaded lablgtk executable, having ine thread managing the interface and the other running programs, that even if i had a way of killing a thread (or setting a mutex or whatever to signal it to stop), that if the running thread is looping, i will never be able to execute the interface thread which will (trough a callback) set the mutex to the stop option, because the running thread doesn't do blocking IO ? Mmm, checking the mutex is a blocking IO though, isn't it ? keeping the GUI alive even if some other stuff is taking time or looping forever is a nice application of threading support. Friendly, Sven Luther ------------------- 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