diff options
author | Björn Gustavsson <[email protected]> | 2016-01-12 15:15:01 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-02-25 14:53:11 +0100 |
commit | 1703b979ffcbfbe44c9014f28384305fea930511 (patch) | |
tree | 19c99eaba0ec249355300dd76b477d83ea9960a4 /erts/emulator | |
parent | c634592019654ae801710665320d20c062252524 (diff) | |
download | otp-1703b979ffcbfbe44c9014f28384305fea930511.tar.gz otp-1703b979ffcbfbe44c9014f28384305fea930511.tar.bz2 otp-1703b979ffcbfbe44c9014f28384305fea930511.zip |
code: Add functions that can load multiple modules
Add functions to 'code' to allow loading of multiple modules
at once.
code:atomic_load(Modules) will load all modules at once, or fail
having loaded none of them. Since we cannot guarantee the atomicity if
there are modules with -on_load functions, the list of modules must
not contain any modules with an -on_load function.
Also, to make it possible to put an application into an inactive state
for as short time as possible, also add code:prepare_loading/1 and
code:finish_loading/1. They are used like this:
{ok,Prepared} = code:prepare_loading(Modules)
.
.
.
ok = code:finish_loading(Prepared)
code:ensure_modules_loaded/1 is useful as a pure optimization to
ensure that modules that will be needed soon have indeed been
loaded. It will not reload modules that have already been loaded and
it *will* accept modules that have an on_load function. Therefore, it
does not make sense to give any atomicity guarantees.
I did consider overloading the existing code:ensure_loaded/1
function, but rejected it because the return value is very
different. Having different forms of return values depending
on the types of arguments is confusing.
Diffstat (limited to 'erts/emulator')
0 files changed, 0 insertions, 0 deletions