Jika Anda harus menjelaskan konsep multi-threading kepada anak berusia tujuh tahun, bagaimana Anda melakukannya? Baru-baru ini saya mendapatkan pertanyaan ini dalam sebuah wawancara. Saya datang dengan cerita menggunakan pekerjaan (tugas yang harus dilakukan) dan pekerja (utas) tetapi itu tidak sepenuhnya meyakinkan (mengingat anak itu terlalu muda).
Jika Anda diminta untuk menggambarkan ini, bagaimana Anda melakukannya?
interview
teaching
multithreading
Vinoth Kumar
sumber
sumber
Jawaban:
Jelaskan apa itu, tinggalkan saja persyaratan teknis kecuali untuk definisi:
sumber
Hai anak. Pernahkah Anda berjalan dan mengunyah permen karet sekaligus memikirkan Pokemon? Itu otak Anda multi-threading.
sumber
Hubungkan dengan sesuatu yang mudah mereka pahami. Mobil di jalan.
Pikirkan satu jalur jalan. Dengan 12 mobil di atasnya, mereka mengemudi satu demi satu. Dan hanya satu mobil yang dapat selesai pada saat yang sama, dan mobil yang lebih cepat, tidak dapat melewati yang lebih lambat.
Tapi, dengan multi-threading, itu seperti semua mobil itu mengemudi di jalan lebar dengan empat jalur. Mobil yang lebih cepat bisa melewati yang lebih lambat.
Edit: dan, jika mereka tidak hati-hati, mereka dapat saling menabrak ...
sumber
Saya akan menjelaskannya seperti mencuci pakaian.
Anda memiliki 3 binatu, dan satu mesin cuci dan satu pengering.
Cara setiap orang mencuci adalah memindahkan beban pertama ke dalam pengering daripada meletakkan beban berikutnya untuk mencuci.
Setiap anak akan mengerti bahwa menunggu beban pertama mengering sebelum mulai mencuci beban kedua akan membutuhkan lebih banyak waktu.
Anda bahkan bisa melangkah lebih jauh dengan menjelaskan jika Anda memiliki lebih banyak mesin cuci dan pengering (seperti di binatu), Anda dapat melakukan beban lebih cepat.
sumber
Memasak makanan dengan beberapa hidangan di atas kompor kecil. Anda memiliki dua pembakar (yaitu prosesor atau inti) dan empat piring (utas) untuk dimasak. Jadi hanya maksimal dua hidangan yang bisa dimasak (lari) sekaligus. Masakan yang berbeda memiliki waktu memasak yang berbeda. Si juru masak (OS) harus menyulap semua ini sehingga semuanya dimasak tepat waktu untuk makan malam.
sumber
Juggler sirkus dimulai dengan dua bola dan secara bertahap menambahkan semakin banyak bola ke aktingnya.
sumber
Dalam pengalaman saya, anak-anak berusia 7 tahun tidak memiliki masalah dengan konsep berbagai hal yang terjadi pada saat yang sama, yang disaksikan oleh berbagai toolkit pemrograman yang dirancang untuk anak-anak. Khususnya kit Lego, tetapi juga sistem Scratch.
Mungkin pewawancara hanya mencoba menemukan sudut pandang baru dalam menanyakan sesuatu yang tidak terduga.
sumber
"Aku ingin kamu membawa dua gelas dari dapur ke meja . (Mereka berlari, membawa gelas di masing-masing tangan.) Sekarang, tolong lakukan lagi, tetapi hanya gunakan satu tangan."
sumber
Beberapa jawaban ini mengejutkan ... Saya pikir saya mungkin satu-satunya di sini yang tahu anak berusia 7 tahun ???
Secara keseluruhan saya pikir meninju wajah pewawancara adalah jawaban yang lebih baik.
sumber
Multi utas, ini seperti memiliki banyak hal untuk dilakukan sekaligus, dan melakukannya sedikit demi sedikit.
Hai lelaki muda yang penasaran, setiap hari kamu harus makan, bermain & tidur; kanan? Tetapi mengapa Anda tidak makan sekali ... makan banyak sampai Anda tidak bisa makan lebih banyak, lalu tidur sepanjang waktu yang Anda butuhkan, lalu mainkan & mainkan game yang menarik?
Nah, Anda tidak bisa melakukan itu, karena jika Anda tidak makan, Anda akan lapar, tidak peduli berapa banyak yang Anda dapatkan di makanan sebelumnya. Jika Anda tidak tidur, Anda akan lelah dan tidak bisa bermain dengan teman-teman Anda. Mengerti? Ada beberapa hal yang perlu dilakukan, tetapi kita tidak bisa melakukannya sekaligus. Kami makan sarapan, bermain game, makan siang, bermain game lagi, ... dan akhirnya mengucapkan "selamat malam".
Itu juga cara komputer bekerja: mereka sedikit memutar musik, kemudian beralih ke gambar yang Anda gambar, lalu beralih lagi untuk memutar musik. Tetapi waktu yang dibutuhkan untuk melakukan semua hal itu seribu kali hanya sekejap mata, jadi Anda tidak bisa melihatnya.
sumber
Anda memiliki 6 tugas yang harus Anda lakukan:
Setiap tugas membutuhkan 1 jam untuk dilakukan. Anda memiliki 2 saudara laki-laki.
sumber
Anda punya satu pengendali joystick / game.
Ada 4 anak. Setiap anak mengambil giliran memainkan setiap level sementara yang lain beristirahat. Menggunakan kerja tim, mereka akhirnya mencapai level 255 *.
Sementara setiap anak bermain, dia juga makan dari sekantong keripik yang hanya bisa dimakan oleh pemain saat ini.
* Kemudian game macet. ;)
"Kenapa kamu tidak membeli 3 pengendali lagi?"
Ya, itu adalah beberapa prosesor!
sumber
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.
sumber
Gunakan model yang diadopsi secara luas: filsuf makan.
5 filsuf makan makan malam pasta mereka.
5 garpu tersedia di sekitar meja.
Setiap filsuf membutuhkan dua garpu untuk dimakan.
Beberapa makan. Beberapa orang berfilsafat sambil menunggu.
sumber
Misalkan Anda (anak itu) memantulkan bola di kepala Anda. Setelah setiap bouncing, Anda menghitungnya, yaitu, jumlah bouncing. Juga setelah setiap pentalan Anda mengucapkan huruf-huruf dari alfabet (A, B, C, ...)
Nak, Anda multithreading.
sumber
Plat berputar adalah contoh yang baik. Pikirkan orang-orang penyihir yang mengambil beberapa piring dan membuatnya berputar pada saat yang sama. Pesulap terus-menerus berganti piring untuk memastikan semuanya tetap berputar.
sumber
Komputer benar-benar hanya dapat bekerja pada satu hal pada satu waktu, tetapi dapat melakukan hal-hal dengan sangat cepat. (Saya tidak menggunakan pemrosesan multi-inti untuk kesederhanaan.) Tetapi bagaimana jika Anda ingin mendengarkan musik dan bermain game pada saat yang sama? Komputer (sangat cepat) beralih antara menangani musik dan menangani permainan.
sumber
Taman bermain lokal kami memiliki tiga slide dan satu slide. Threading seperti slide tiga, 3 anak-anak dapat meluncur ke bawah secara bersamaan. Tetapi pada slide tunggal dua anak harus menunggu di atas untuk anak pertama turun slide.
Apakah bagian dari deskripsi pekerjaan melapor kepada CFO?
sumber
Dua anak di taman bermain berbagi (memperebutkan) sumber daya terbatas, katakanlah potongan lego yang diperlukan dari sebuah kotak kecil untuk membuat robot favorit mereka.
sumber