Browse thread
[Caml-list] Threads & the order that module initialization code runs
-
Richard Jones
- Michel Christophe
- Yamagata Yoriyuki
[
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: | Michel Christophe <tofm2@y...> |
| Subject: | Re: [Caml-list] Threads & the order that module initialization code runs |
Thanks for answers Le mar 01/07/2003 à 15:34, Richard Jones a écrit : > A quick question about threads: > > I have a few modules simulating a network and some machines connected > to the network. > > In, for example, network.ml, I have a bunch of initialization code at > the top level: > > --- network.ml --- > let new_queue i = > (Queue.create (), > Mutex.create (), > Condition.create ()) in > let out_queue = Array.init nr_machines new_queue > > (* There is one queue of incoming messages to the network thread. *) > let in_queue = Queue.create () > > (* Mutex/condition protecting the in_queue. *) > let in_mutex = Mutex.create () > let in_cond = Condition.create () > ------ > > And also I have a Main module which starts up the threads: > > --- main.ml --- > (* Create a thread to simulate the network. *) > let network_thread = Thread.create Network.run ();; > > (* Start a thread for each of the simulated machines. *) > let machine_thread = Array.init nr_machines (Thread.create Machine.run);; > ------ > > It's obviously going to be a problem if the initialization code in > Network hasn't run by the time the machine threads have been started > up in Main (or if the network thread itself gets started up first). > > Now it all seems to work, but am I being lucky or do module > initializers run in some sort of well-defined order I can depend on? > > Rich. ------------------- 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