2016-07-12 12 views

cevap

9

Her iki fonksiyon çağıran sürecin çocuklar gibi yeni gen_server örneklerini başlatmak, ancak farklılık gen_server:start_link/3,4 atomik başladığını bir gen_server çocuk ve ebeveyne bağlantıları bu işlem. Bağlama, çocuk ölürse, ebeveynin varsayılan olarak da öleceği anlamına gelir. Supervisors, alt süreçleri normal olarak yeniden başlatıldığında, genellikle onları yeniden başlatırken belirli eylemleri gerçekleştirmek için bağlantıları kullanan ana işlemlerdir.

gen_server:start_link davasındaki ilgili bağlantı dışında, bu çağrılarda çok işlemli yönler yoktur. Yeni gen_server'u başlatmak için gen_server:start veya gen_server:start_link'u kullanmanızdan bağımsız olarak, yeni işlemin tek bir ileti sırası vardır ve bu iletiler her seferinde bir tane alır ve işler. Yeni gen_server işleminin, gen_server:start ile başlatıldığından farklı davranması veya performans göstermesine neden olan gen_server:start_link hakkında hiçbir şey yoktur.

+0

hakkında çok güzel bir bölüm var. Lütfen Steve'i inceleyin. –

+1

Düzenlemenizde neler olduğunu zaten yanıtladı. Birden çok işlem, "gen_server" işlevini eşzamanlı olarak çağırırsa, iletileri "gen_server" ileti kuyruğunda sıraya alınır ve "gen_server" bu iletileri tek seferde işler. –

4

gen_server:start_link'u kullandığınızda yeni işlem arama işleminin "alt öğesi" olur - bu, denetim ağacı'un bir parçasıdır. Gen_server işlemi ölürse çağrı sürecinin bildirilmesine izin verir. gen_server:start

Denetim ağacının dışında bir işlem gerçekleştirecektir.

Erlang denetim Güzel açıklaması buradadır: http://learnyousomeerlang.com/supervisors

+0

Genserver'im birden çok ileti dizisinden çağrılırsa, hepsini bir seferde yürütecek mi? ya da bu iş parçacıkları arasında eşzamanlılık yaratacak mı? –

+0

Cevabınız için teşekkürler, bana da cevap verebilir misiniz? –

+4

Erlang "thread" terimini kullanmaz. Buna "süreç" denir. Birden çok işlem aynı gen_server çağırırsa, istekleri sıraya alınacak ve birbiri ardına işlenecektir. Http://learnyousomeerlang.com/content adresinde OTP – Novakov

İlgili konular