Next: MT Multiple, Up: Multiple SICStus Runtimes in C [Contents][Index]
When building an application with spld, by default only one
SICStus runtime can be loaded in the process. This is similar to
what was the case before release 3.9. For most applications built
with spld, the changes necessary to support multiple SICStus
runtimes should be invisible, and old code should only need to be
rebuilt with spld.
In order to maintain backward compatibility, the global dispatch vector
is automatically set up implicitly by SP_initialize() and
explicitly by SP_setup_dispatch(). Other SICStus API
functions will not set up the dispatch vector, and will therefore lead
to memory access errors if called before
SP_initialize(). Currently, hook functions such as
SP_set_user_stream_hook()
also set up the dispatch vector to allow
them to be called before SP_initialize(). However, only
SP_initialize() and SP_setup_dispatch() are
guaranteed to set up the dispatch vector. The
hook installation functions may change to use a different
mechanism in the future. The SICStus API functions that perform
automatic setup of the dispatch vector are marked with
SPEXPFLAG_PREINIT in sicstus.h.