Mi a különbség a folyamat elágazása és ívása között?


Legjobb válasz

Az ívás egy másik folyamatot indít, majd folytatja az ívást végző folyamatot.

A villa egy speciális Unix / Posix mechanizmus, amely felhasználható az íváshoz. A Forking ugyanannak a folyamatnak két közel azonos verzióját állítja elő. „Közel”, mert a folyamatok képesek megmondani, hogy az eredeti vagy a villás verzióról van-e szó. Ezután folytathatnák, és folytathatnának különböző dolgokat, különböző tudnivalók szerint, annak a tudatnak megfelelően, hogy melyik esetről van szó, de a leggyakoribb dolog az, olyan esetekre, amikor más eljárással helyettesíti magát, ugyanaz a hatás, mint az ívás. De nem kell ehhez tennie – mindkét feladat logikája benne lehet az egyetlen folyamatban.

Válasz

A Process.fork lehetővé teszi rubin kód futtatását egy másik folyamatban. A Process.spawn lehetővé teszi egy másik program futtatását egy másik folyamatban. Alapvetően a Process.spawn olyan, mint a Process.fork használata, majd az exec meghívása a villás folyamatban, azzal a különbséggel, hogy ez több lehetőséget biztosít.

és melyik jobb futtatni egy másik programot egy alfolyamatban?

Ha visszafelé kompatibilitásra van szüksége, használja a fork + exec programot, mivel a spawn nem érhető el az 1.8 verzióban. Egyébként használja az ívást, mivel egy másik program futtatása egy alfolyamatban pontosan az, amire az ívás készült.

Ha jól értem, a Process.fork elfogadja a kódblokkot, a Process.spawn pedig egy rendszerparancsot és néhány egyéb paramétert vesz fel.

Pontosan.

Mikor használjam az egyiket a másik helyett?

Használja a villát, ha önkényes rubinkódot kell futtatnia külön folyamatban (ezt nem lehet spawn-val megtenni). Használja a spawn-t, ha alkalmazást kell meghívnia egy alfolyamatban.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük