aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2016-01-12 15:15:01 +0100
committerBjörn Gustavsson <[email protected]>2016-02-25 14:53:11 +0100
commit1703b979ffcbfbe44c9014f28384305fea930511 (patch)
tree19c99eaba0ec249355300dd76b477d83ea9960a4 /erts/emulator
parentc634592019654ae801710665320d20c062252524 (diff)
downloadotp-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