Portál AbcLinuxu, 30. dubna 2025 12:43
modul:foo
místo jen foo
a bum a běží v nové verzi, typicky se tak píšou loop
smyčky serveru viz níže).
Samoupgradující server:loop(State) -> receive Msg -> NewState = do_some(State, Msg), ?MODULE:loop(NewState) end.Server s upgrade on demand:
loop(State) -> receive upgrade -> ?MODULE:loop(State); Msg -> NewState = do_some(State, Msg), loop(NewState) end.Pokud ten server má zpracovávat řádově stovky tisíc requestů za sekundu tak ten druhej kód bude o chlup rychlejší, ale zas musíš při upgrade zaslat ten signál.
Interpret možná přijde na řadu malinko později, jestli tím oslním svou slečnu, to sice nevím, ale zkusit to můžu (od mě jako od Matfyzáka už zažila mnohé ).Největší frajeřina by byla dát jí ho k narozeninám...tím samozřejmě myslím napsat ho tak kompaktní, aby se – napsaný polevou – vešel na horní stranu dortu.
foo
, tak to všechno běhá uvnitř té binárky snad i včetně imported funkcí (přímé adresy do verze jiného modulu, která byla v okamžiku natažení volajícího modulu, ale tím si nejsem jistý, možná, že to rovnou sahá po aktuální verzi) a v okamžiku požadavku na module:foo
se koukne do aktuálního slovníku (je to o chlup pomalejší) a skočí na nejnovější verzi (trošku to připomíná Debian a jeho větve init
modulu a dalších systémových věcí je trochu těžší, ale jak často měníš jádro, že BEAM
u, případně jádra, kompilátoru a loaderu. Zdrojáky jsou k dispozici
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.