Uygulamaları ile "Reaktör Modeli" için Basit Açıklama [kapalı]


89

Reaktör modeli wikipedia'da açıklanmıştır ve biraz fazla soyuttur. Bu modeli daha somut bir şekilde tanımlayabilir misiniz? İdeal olarak, reaktör modelinin bazı uygulamalarını açıklayan kod parçacıkları veya üst düzey sınıf diyagramları ile.


3
Bu soruyu harika bir cevap
buldum

Yanıtlar:


38

Açıklayan orijinal belgeye göz atmak isteyebilirsiniz http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf

Reactor tasarım modeli, bir veya daha fazla müşteri tarafından bir uygulamaya eşzamanlı olarak teslim edilen hizmet taleplerini ele alır. Bir uygulamadaki her hizmet, çeşitli yöntemlerden oluşabilir ve hizmete özgü istekleri göndermekten sorumlu ayrı bir olay işleyicisi tarafından temsil edilir. Olay işleyicilerinin gönderilmesi, kayıtlı olay işleyicilerini yöneten bir başlatma dağıtıcısı tarafından gerçekleştirilir. Hizmet taleplerinin çoğullama çözme işlemi, bir eşzamanlı olay çoğullama çözücüsü tarafından gerçekleştirilir.


Douglas Schmidt ve arkadaşları, makaleyi okurken fark edeceğiniz gibi, Reactor modelinin merkezi bir rol oynadığı The Adaptive Communications Environment adlı oldukça verimli ve modüler bir C ++ çerçevesi uyguladı. Çerçevenin kendisi çok sayıda tasarım modelini kullanır ve tek başına bu amaçla incelemeye değer. Son derece ölçeklenebilir C ++ arka uçları oluşturmak için taşınabilir bir çerçeve arıyorsanız, ACE bir göz atmaya değer.
user2015735

1
@reese Bağlantısı bugün kırıldı adam :(
Allan Chua

1
@AllanChua Sanırım buldum - dre.vanderbilt.edu/~schmidt/PDF/Reactor.pdf
manish ma

3
OP "basit, somut" bir açıklama istedi ve siz Wikipedia'dan bile daha soyut bir şey
önerdiniz

21

Bir reaktör, tek bir iş parçacığı kullanılarak verimli bir şekilde işlenmesini engelleyen (örneğin IO nedeniyle) birden fazla görevin yapılmasına izin verir. Reaktör, bir işleyici havuzunu yönetir ve bir olay döngüsü çalıştırır. Bir görevi yerine getirmesi çağrıldığında, onu yeni veya boş bir işleyiciye bağlayarak onu aktif hale getirir. Olay döngüsü (1), etkin ve engellenmemiş tüm işleyicileri bulur (veya bunu bir dağıtıcı uygulamasına devreder) (2) bu bulunan işleyicilerin her birini, engelledikleri noktayı tamamlayana veya ulaşana kadar sırayla yürütür. Tamamlanan işleyiciler devre dışı kalır ve yeniden kullanım için boş hale gelirken, engellenen etkin işleyiciler sonuç olarak olay döngüsünün devam etmesine izin verir. (3) Adım (1) 'den tekrarlar


1
Olumsuz oy çünkü bu doğru değil
SebNag

3
Ana fikir, eşzamanlı olay çoğullama çözme gerçekleştirmektir. Olay işleyicileri yalnızca engellemesiz bir şekilde yürütülebilirlerse çağrılırlar, örneğin tüm veri paketi bir ağ soketinde mevcutsa, bir olay işleyicisinin verileri işlemesini beklerler. Bu, olay işleyicisini engellemesiz bir şekilde sırayla gerçekleştirmeyi mümkün kılar
SebNag

2
"Reactor modeli, bir işlemi bloke etmeden eşzamanlı olarak başlatmak mümkün olduğunda tetiklenen birden çok olay işleyicisinin çoğullamasının çözülmesinden ve gönderilmesinden sorumludur." kabul edilen cevaplayıcıda bağlantılı gazeteden
SebNag

Bu hiç de doğru değil. Bir reaktör modelinde olduğu kadar reaktör olmayan bir iplik de vardır. Bir olay döngüsü yerine, gözlemci / olay dinleyici modelini kullanmayan tek bir "sürüş" iş parçacığına sahip olabilirsiniz. Aynı performans.
Zombies
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.