Sanat sınıfı (Çok dişli uygulama)
Öğretmensiz bir sınıf olamayacağından, bir öğretmene ihtiyacınız var (ana konu). Derse girdiğinizde oturursunuz ve öğretmen herkesi hesaba katar ve sınıfa resim çizmesi için ders verir.
Öğretmen tüm öğrencilere resme başlamaları için gün ayırır (iplik başlatma ve ödev verme).
Okulun sadece çok fazla boyası olduğu için herkes birbiriyle renkleri paylaşmak zorunda kalacak (boyalar belleği temsil eder).
Diyelim ki bir ejderha çiziyorsun ve çılgın kırmızı gözler vermek istiyorsun ama başka biri kırmızı boya kullanıyor. Sadece gidip kendin için boya alamazsın, çünkü o zaman kimse bunu kullanamazdı. Bunun yerine, yaptığınız şey, kibarca boyayı paylaşmanızı (kaynak kilitlemesini) istemektir. Biraz kullanıyorsun, sonra geçiyorsun. Geri almak için biraz beklemeniz gerekebilir, ancak ihtiyacı olan herkesin boya dövüşmeden biraz kazanmasını sağlar (yarış koşulları).
Sınıfın sonunda öğretmen sınıfı reddeder (iplik katılmadan).
Oyun (Çok işlemli uygulama)
Arkadaşlarla bir kart oyunu oynamak (veya koleksiyonla eşdeğer bir oyun):
Okuldan sonra arkadaşlarınızla (süreçlerle) bir araya geldiğinizi varsayalım. Etrafta hiç öğretmen yok, kimsenin sana ne yapacağını söylemesi yok.
Oyun oynamak için herkes bir araya geliyor (çok işlemli veya çok katmanlı uygulama).
Kartlarınızı rakiplerinizi yenmek için nasıl kullanabileceğinizi düşünürsünüz (içsel işlem) ve bir fikir bulduğunuzda (mesaj iletirken) fikirlerinizi eşinizle paylaşmaya çalışırsınız.
Eğer gerçekten iyi olursan bir kulübe katılabilirsin:
Lider (yönetici programı) Üyeleri (alt programlar)
Eğer kulüp gerçekten iyi olursa, daha iyi bir strateji geliştirmek için birbirleriyle iletişim kurmanın özel bir yolunu (API) bulabilirler.
Buradaki çoklu işlemcilerden / çekirdekten bahsetmemeyi seçtim çünkü soyutlama oldukça karmaşıklaşıyor (ve bağlam değiştirme çoğu uygulama için hala şeffaf.). Muhtemelen oyundaki her takımın ayrı bir işlemciyi / çekirdeği temsil ettiğini ve çoğu oyunun hala emildiğini söyleyerek başlayabilirim çünkü bir oyunda sadece birkaç takımın birlikte oynamasına izin veriyorlar. Gelecek, birçok insanın birçok farklı takımda bir oyunda birlikte oynayabileceği bir MMORPG'ye benzeyebilir.
Çok çekirdekli bir bilgisayarda ya da bir çok ana bilgisayar ağındaki dağıtıcı bir işleme sistemi için bir çocuk metaforu geliştirmeye çalışmak oldukça ilginç olurdu ama Op'un istediği şey bu değildi.
Not:
Yukarıda geçen mesaj, programların birbirleriyle konuşmak için kullandıkları birçok iletişim biçimine referanstır. İnsanlar gibi, uygulamaların da birbirleriyle konuşmak için birçok yolu vardır. Yazma Pipetleme serileştirme verisi gibidir, konuşma ağ iletişimi gibidir, fısıldama şifreli bir bağlantı üzerinden ağ iletişimi gibidir, veritabanları bir skor kartı gibidir (iyi tanımlanmış verilere sahip sonlu yapı) ve MSMQ kullanımı kafanı bir veri tabanına çarparak mors kodunu vurmaya benzer katı yüzey.
Bunun ötesindeki diğer iletişim biçimlerinin çoğu, onları ayırt edilemez olarak değerlendirmem için çok fazla bulanıklaşıyor.
kenara:
Halo gibi bir çevrimiçi oyun oynadıysanız, gruplara katılan (ya da profesyonel oyuncu olan) insanlar, diğer takım oyuncularının nerede olduklarını ve ne kullandıklarını birbirlerine yönlendirmek için arama yapmak için genellikle kısaltılmış bir dile sahiptir. Görüşmeleri bilmiyorsanız gerçekten iğrenç ama oyun sırasında şaşırtıcı derecede etkili.
Belirli bir kültürde yaşayan birçok insanın ortak bir dil konuşmasına rağmen, bu kültür içinde insanların belirli görevleri yerine getirmek için optimize edilmiş daha kısa ve özlü etki alanı dilleri geliştirmeleri ilginçtir. Hesaplamada bunu bir API ile karşılaştırırdım.