Kelas seni (aplikasi multi-utas)
Karena tidak ada kelas tanpa guru, Anda memerlukan guru (utas utama). Ketika Anda sampai di kelas, Anda duduk dan guru bertanggung jawab untuk semua orang dan menugaskan kelas untuk melukis gambar untuk hari itu.
Guru menugaskan semua siswa untuk memulai melukis (inisialisasi benang dan tugas).
Karena sekolah hanya memiliki begitu banyak cat, semua orang harus berbagi warna satu sama lain (cat mewakili memori).
Katakanlah Anda sedang melukis naga dan Anda ingin memberikannya mata merah gila tetapi orang lain menggunakan cat merah. Anda tidak bisa hanya pergi dan mengambil cat untuk diri sendiri karena dengan begitu tidak ada orang lain yang akan dapat menggunakannya. Sebaliknya, yang Anda lakukan adalah Anda dengan sopan meminta untuk membagikan (mengunci sumber daya) cat. Anda menggunakan sedikit, lalu meneruskannya. Anda mungkin harus menunggu sedikit untuk mendapatkannya kembali tetapi memungkinkan semua orang yang membutuhkannya untuk mendapatkan beberapa tanpa pertarungan cat (kondisi balapan).
Pada akhir kelas guru menolak kelas (bergabung dengan thread).
Gaming (Aplikasi multi-proses)
Memainkan permainan kartu dengan teman-teman (atau game setara dengan barang koleksi):
Katakanlah Anda bertemu dengan teman-teman Anda (proses) sepulang sekolah. Tidak ada guru di sekitar untuk tidak ada yang memberi tahu Anda apa yang harus dilakukan.
Semua orang berkumpul untuk bermain game (aplikasi multi-proses atau berlapis-lapis).
Anda berpikir keras tentang bagaimana Anda dapat menggunakan kartu Anda untuk mengalahkan lawan Anda (pemrosesan internal) dan Anda mencoba untuk berbagi ide dengan pasangan Anda ketika Anda datang dengan ide (lewat pesan).
Jika Anda benar-benar hebat, Anda dapat bergabung dengan klub:
Anggota Pemimpin (program eksekutif) (subprogram)
Jika klub menjadi sangat baik, mereka mungkin datang dengan cara khusus (API) untuk berkomunikasi satu sama lain untuk membantu menyusun strategi yang lebih baik.
Saya memilih untuk tidak menyebutkan banyak prosesor / core di sini karena abstraksi menjadi cukup rumit (dan pengalihan konteks masih transparan untuk sebagian besar aplikasi). Saya mungkin bisa mulai dengan mengatakan bahwa setiap tim dalam permainan mewakili prosesor / inti yang terpisah dan sebagian besar permainan masih payah karena mereka hanya memungkinkan beberapa tim untuk bermain bersama dalam sebuah permainan. Masa depan mungkin terlihat lebih seperti MMORPG di mana banyak orang dapat bermain bersama dalam permainan di banyak tim yang berbeda.
Mencoba mengembangkan metafora anak-anak untuk sistem pemrosesan distributif pada banyak komputer inti atau banyak jaringan host akan sangat menarik untuk dimainkan, tetapi bukan itu yang diminta oleh Op.
catatan:
Pesan yang lewat di atas adalah referensi ke banyak bentuk komunikasi yang digunakan program untuk berbicara satu sama lain. Seperti orang, aplikasi memiliki banyak cara untuk berbicara satu sama lain. Menulis seperti Piping data serial, berbicara seperti jaringan, berbisik seperti jaringan melalui koneksi terenkripsi, basis data seperti kartu skor (struktur terbatas dengan data yang terdefinisi dengan baik), dan menggunakan MSMQ seperti mengetuk kode morse dengan menepuk kepala Anda ke sebuah permukaan padat.
Sebagian besar bentuk komunikasi lain di luar itu terlalu banyak mengabur sehingga saya menganggapnya tidak bisa dibedakan.
Ke samping:
Jika Anda pernah memainkan game online seperti Halo, orang-orang yang bergabung dengan grup (atau menjadi pemain pro) biasanya memiliki bahasa yang disingkat untuk memberikan info untuk saling mengarahkan di mana pemain tim lain berada dan apa yang mereka gunakan. Ini benar-benar menjengkelkan jika Anda tidak tahu info tetapi sangat efektif selama bermain game.
Sangat menarik bagaimana, meskipun kebanyakan orang yang hidup dalam budaya tertentu berbicara bahasa yang sama tetapi dalam budaya itu orang mengembangkan bahasa domain singkat yang lebih pendek yang dioptimalkan untuk menangani tugas-tugas tertentu. Dalam komputasi saya akan membandingkannya dengan API.