Hi,
Suppose I have a namespace that has some ns-level side effect, e.g. `(def atom
{})`.
1. When is that executed? How often? (I think, from observation, that the
answer is “when it is first required”, and “exactly once”; but it’s important
for the correctness of my program that this is the case.)
2. Is there a mutex preventing multiple threads from attempting that at the
same time? If so, is that an accident, or a language guarantee?
I don’t know if it matters, but in this case the side effect will be a method
call on a jnr-ffi binding, so internally it will go off and synchronously
initialize a C library. It’s fine if it gets called multiple times, but only if
it has been executed by exactly 1 thread first. (It sets some state to signify
that it’s initialized; if you call it when it’s already initialized, it just
exits. It is _not_ re-entrant.)
If these guarantees don’t hold, is there a convenient/canonical way to execute
that side-effect synchronously? I’d like to prevent users of my library to have
to remember to call an init fn in their main- if I can.
thanks
lvh
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.