Bagaimana Anda menjelaskan multi threading kepada anak berusia tujuh tahun?

21

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?

Vinoth Kumar
sumber
55
Saya akan bertanya kepada pewawancara apakah dia berencana mempekerjakan anak berusia 7 tahun.
Craige
14
Saya akan meninju Pewawancara di Wajah.
Morons
11
Mungkin untuk menguji bahwa Anda mengetahui subjek dengan cukup baik untuk mengajarkannya kepada seseorang yang sama sekali tidak memiliki pengetahuan tentang subjek tersebut.
FrustratedWithFormsDesigner
6
@Monsons Pertama-tama, itu agak kasar. Kedua, apakah kata-kata Anda menggunakan huruf kapital karena makna khusus?
Nicole
11
@FrustratedWithFormsDesigner Nah, ini benar-benar bodoh. Bisakah Anda menjelaskan bilangan kompleks kepada seseorang yang tidak tahu cara menghitung? Tidak? Kamu sampah di nomor kompleks kalau begitu.
biziclop

Jawaban:

35

Jelaskan apa itu, tinggalkan saja persyaratan teknis kecuali untuk definisi:

  1. Anda memiliki lima pekerjaan yang harus dilakukan. Anda harus mulai mengerjakan semuanya sekarang.
  2. Setiap pekerjaan adalah utas.
  3. Anda adalah pengolahnya.
  4. Luangkan sedikit waktu untuk mengerjakan setiap pekerjaan dan kemudian pindah ke pekerjaan berikutnya, pastikan Anda memperhatikan semuanya.
  5. Jika Anda memiliki lebih banyak orang, pekerjaan hanya dapat dikerjakan oleh satu orang pada suatu waktu.
  6. Karena setiap orang dapat mengerjakan pekerjaan yang berbeda, lebih banyak orang dapat menyelesaikan semua pekerjaan lebih cepat, jika Anda memiliki lebih dari satu pekerjaan.
Nicole
sumber
15
Saya pikir satu-satunya hal yang saya tambahkan adalah mungkin mengubah "pekerjaan" menjadi "permainan" atau bermain dengan mainan atau melakukan pekerjaan rumah atau pekerjaan rumah.
bethlakshmi
Kemudian jika Anda memiliki 'prosesor' 'menyimpan catatan' ketika mereka sedang mengerjakan suatu pekerjaan, Anda dapat menjelaskan cache dan koherensi cache dalam beberapa prosesor env
Steven Evers
Deskripsi yang baik, tetapi mengetahui anak berusia 7 tahun, ini tidak akan terbang.
red-dirt
@el fuser Saya saya berusia 7 tahun! or atlest i ac lke 1 hahahahahaha
Mateen Ulhaq
@bethlakshmi, anggapan Anda bahwa pada usia 7 tahun kebanyakan anak-anak masih bermain-main dan belum keluar dan mendapatkan pekerjaan yang produktif? Ayolah!
Anonymous Type
22

Hai anak. Pernahkah Anda berjalan dan mengunyah permen karet sekaligus memikirkan Pokemon? Itu otak Anda multi-threading.

Adam Crossland
sumber
1
Itulah perangkat otak Anda yang dapat bertindak relatif independen. Ini (hampir) seperti otak Anda menggunakan DMA.
Nick T
@nick T, lebih mirip komputasi awan tanpa akses kode sumber ke komponen. Bahkan orang yang mengunyah permen karet tidak tahu bagaimana sebenarnya mereka melakukan aksinya.
Anonymous Type
@ Tidak, pernyataan terakhir Anda tampaknya memperkuat analogi periferal saya. Perangkat melakukan hal-hal tanpa CPU menggali detail, hanya cukup mendelegasikannya. Saya kira Anda juga bisa mengatakan itu seperti komputasi awan, tapi itu dalam skala yang jauh lebih besar; DMA dan peripheral cukup rendah.
Nick T
sangat? Saya akan berpikir bermain pokemon (penyelesaian masalah tingkat tinggi) pasti membutuhkan memori mode pengguna dan penggunaan bahasa pemrograman tingkat yang lebih tinggi, tapi mungkin sesuatu seperti mengunyah bisa menjadi DMA.
Anonymous Type
10

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 ...

CaffGeek
sumber
4
Jika multi-threading adalah jalan, maka itu adalah satu tempat ketika satu mobil mengemudi, yang lain tidak bergerak sama sekali - tidak mengikuti di belakangnya ...
Nicole
@Renesis, poin bagus, saya kira saya bisa mengubah contoh menjadi jembatan sempit yang hanya bisa dilewati oleh satu mobil karena dua mobil akan berat dua ...
CaffGeek
10

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.

Tyanna
sumber
2
Selain itu, Anda tidak dapat mengeringkan cucian hingga beban melewati mesin cuci, sehingga Anda juga dapat menjelaskan pemblokiran
zzzzBov
Saya hampir memberi Anda +1, tetapi kemudian saya menyadari bahwa tidak ada anak waras yang akan mengikuti penjelasan ini. Sebagai permulaan Anda menggunakan sesuatu yang sangat membosankan (dari perspektif anak-anak bukan milikku) yang merupakan tugas. Begitu Anda mengucapkan kata cucian, pikiran mereka mati, mereka benar-benar hanya akan mendengar 7 kata pertama.
Tipe Anonim
6

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.

tcrosley
sumber
3

Juggler sirkus dimulai dengan dua bola dan secara bertahap menambahkan semakin banyak bola ke aktingnya.

Yuriy Zubarev
sumber
Ini adalah jawaban terbaik karena menjawab pertanyaan dari sudut pandang anak berusia 7 tahun, bukan programmer berusia 30 tahun.
Tipe Anonim
2

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.

pengguna1249
sumber
2

"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."

JK
sumber
2

Beberapa jawaban ini mengejutkan ... Saya pikir saya mungkin satu-satunya di sini yang tahu anak berusia 7 tahun ???

Jadi, Johnny ... Multi-threading mirip dengan apa yang terjadi ketika membersihkan waktu di sekolah. Semua kelas Anda perlu dibersihkan setelah akhir hari ... Setiap anak pada dasarnya adalah thread ... mengambil mainan adalah tugas, dan kotak mainan adalah sumber daya bersama.

Secara keseluruhan saya pikir meninju wajah pewawancara adalah jawaban yang lebih baik.

kotoran merah
sumber
siapa pun yang menandai -1 ini bercanda sendiri. serius menumbuhkan rasa humor. Ini pertanyaan konyol yang harus diperlakukan dengan cara itu.
Anonim Tipe
Ini mungkin salah satu jawaban terbaik yang didengar sejauh ini. Dibutuhkan konsep dan dimasukkan ke dalam istilah yang dipahami pendengar - bahkan jika pendengar tidak tahu cara membuat kode aplikasi multithreaded, mereka sekarang akan memahami ide dasar.
FrustratedWithFormsDesigner
2

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.

Hoàng Long
sumber
1

Anda memiliki 6 tugas yang harus Anda lakukan:

  • kerjakan pekerjaan rumah Anda
  • Bersihkan kamarmu
  • berbelaja
  • pilih apel di kebun
  • mencuci piring
  • sapu serambi

Setiap tugas membutuhkan 1 jam untuk dilakukan. Anda memiliki 2 saudara laki-laki.

  • Jika Anda tidak menggunakan multitasking, itu artinya Anda harus melakukan semua pekerjaan sendiri. Ini akan memakan waktu 6 jam (jika Anda mulai pada pukul 12:00, semua tugas akan selesai pada pukul 18:00).
  • Jika Anda menggunakan multitasking, itu berarti Anda dapat memberikan beberapa tugas kepada saudara Anda. Jika Anda semua mulai bekerja pada saat yang sama, Anda akan menyelesaikan semua tugas lebih cepat. Dalam hal ini, Anda bertiga akan melakukan 2 tugas masing-masing, yang akan memakan waktu 2 jam (jika Anda semua mulai pukul 12:00, semua tugas akan selesai pada 14:00!).
pengguna19248
sumber
0

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!

muntoo
sumber
0

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.

Evan Plaice
sumber
-1

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.

S.Lott
sumber
2
Makan fosfor dengan dua garpu? Sobat, mereka bahkan lebih aneh daripada yang kupikirkan! : P Kisah ini lebih masuk akal dengan sumpit, bukannya garpu ...
FrustratedWithFormsDesigner
4
@ Frustasi, itu sebabnya mereka perlu berpikir banyak.
Saya tidak berpikir mengganti sumpit dengan garpu berfungsi dengan baik. :)
Tyanna
4
Saya lebih menyukai analogi sumpit. Anda pasti membutuhkan dua sumpit untuk dimakan. Anda tidak benar-benar membutuhkan dua garpu. Masalah garpu sebenarnya membingungkan masalah. Terutama karena forking adalah istilah kunci dalam multi-pemrosesan.
Paul Sasik
.. Dan kemudian Anda terjebak menjelaskan apa filsuf itu. Dan karena sebab itu mereka akan bertanya mengapa mereka membutuhkan dua garpu (yang agak bodoh dari sudut pandang 7yo) dan mengapa ada orang yang menunggu sebelum makan!
Tipe Anonim
-1

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.

Donotalo
sumber
-1

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.

Ian
sumber
-2

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.

Maxpm
sumber
"Tapi mengapa itu tidak melakukan keduanya pada saat yang sama?"
Mateen Ulhaq
-2

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?

jqa
sumber
-3

Dua anak di taman bermain berbagi (memperebutkan) sumber daya terbatas, katakanlah potongan lego yang diperlukan dari sebuah kotak kecil untuk membuat robot favorit mereka.

hotpaw2
sumber