6

Birkaç gün geri, bir röportajda bir soruFonksiyon geri çağrısı ve süreç içi iletişim aynı mıdır?

Are function callback in C and interprocess communication are same? 

, bana istendi ben bir ikilem olduğunu question.Because bit nötr oldu. IPC'de, sürecin bir işlevden başka bir şey olmadığını görecek olursak, süreç sonunda süreç arasında iletişim kurarız. Burada bir işlev diğer işlevi çağırır. Fonksiyon geri çağırmada, function pointer'u tekrar kullanırız, bu bir işlev, başka bir işlevi adresle çağırır. Yani sadece tamamen aynı olmadıklarını bilmek istedim, bu yüzden fark nedir?

cevap

10

Hayır, pek değil.

İşlev geri çağrısı, bir fonksiyonun adresini (veya başka bir tanımlayıcısını) başka bir işleve ileterek herhangi bir nedenle geri çağırabilmesini sağlar.

Klasik örnek, C standart kitaplığı qsort işlevidir. Bir karşılaştırma işleviyle birlikte diziye (ve boyutlarına) bir gösterici iletirsiniz. qsort işlevi, daha sonra listedeki iki öğeden hangisinin daha büyük olduğuna karar vermek için bu karşılaştırma işlevini (geri arama) kullanır. Öte yandan, IPC, paylaşılan bellek, borular, semaforlar vb. Birbirleriyle iletişim kurmak için kullanılan işlemlerin bir aracıdır. Bazı IPC mekanizmaları geri aramalarını kullanabilir, ancak hiçbir şekilde gerekli değildir. Örneğin, soketler geri aramaları kullanmazlar, bir kullanıcının read ve write numaralarını aramasına izin verir.

Paylaşılan bellekle benzer şekilde, bellek bloklarına eklersiniz ve bunlara "normal" bellekle çok benzer şekilde erişebilirsiniz, sadece efektlerin bu belleğe eklenen tüm işlemlerde hissedilmesidir. kullanım geri aramaları tür yaptığı

Bir ONC RPC (veya Sun RPC) 'dir. Ağ üzerinden istemci çağrılarını bekleyen ve bunları önceden yapılandırılmış istemci işlevine geçiren bir sunucu çalıştırır. Daha fazla ayrıntı here bulunabilir.

Ancak, o zaman bile, derhal derleme zamanında yapılandırıldığından, geri çağırma olarak adlandırmaktan çekinmem gerekir. "Uygun" geri aramalar, çalışma zamanında yapılma eğilimindedir.

+1

+1 bunu (bu sürümün) basitlik ve anlaşılabilirlikle yanıtlayamadı –

+0

@paxdiablo: İşlev geri çağırma: -Bazı sebepten dolayı veri almak demek ... böylece IPC'den soket veya borular kullanarak elde ediyoruz ve tüm –

+0

"Bazı IPC mekanizmaları geri aramaları kullanabilir ancak hiçbir şekilde gerekli değildir." - Bu detaylandırılabilirse iyi olur. – Jay

6

Bir işlev geri çağrısı, arayan ve arayan kişinin aynı iş parçacığında olduğu anlamına gelir. IPC farklı süreçlerde. Bir işlem bir veya daha fazla dişten oluşur. Ergo, geri aramalar IPC değildir.

İlgili konular