Skip to content

Concurrency va Parallelism nima?

Concurrency va Parallelism hozirgi zamonaviy kompyuterlar imkoniyatlaridan samarali foydalanish hisoblanadi.

Tasavvur qilaylik, bugun quyidagi ishlarni bajarishimiz kerak:

  • Podcast tinglash
  • Hisob-kitoblarni to'lash
  • Uy hayvonlarini ovqatlantirish
  • Idish-tovoq yuvish
  • Pizza olib kelish

Agar har bir ishni ketma-ket bajarsak, bu deyarli 5 soat vaqt oladi. Ammo diqqat bilan qarasak, ba'zi ishlar bizdan 100% e'tibor talab qilmaydi (masalan, podcast tinglash yoki pizza olib ketish). Boshqa ishlar esa vaqt-vaqti bilan nazorat qilishni talab qiladi (idish yuvish yoki hayvonlarni ovqatlantirish). Shunday ekan, multitasking (bir vaqtning o'zida bir nechta ishni qilish) orqali bu ishlarni 3 soat ichida bajarishimiz mumkin. Masalan:

  • Dastlab hisob-kitoblarni to'laymiz.
  • Keyin idishlarni yuvishga qo'yamiz va hayvonlarga ovqat beramiz.
  • Podcastni yoqib, orada boshqa ishlarni tugatamiz.
  • Podcast tinglagan holda pizzani olib kelamiz.

Endi bu yerda concurrency nima qani?

Concurrency bu - bir nechta ishlar ustida bir vaqtning o'zida ishlash, ayni paytda har biri ustida to'liq e'tibor bermasdan, ularni boshqarib turish. Agar bizga yordamchilar bo'lsa masalan, bir do'stimiz hisob-kitobni qilsa, boshqa biri esa idishlarni yuvsa- barcha ishlarni bir vaqtda boshlab, yanada tezroq yakunlash mumkin bo'ladi. Dasturlashda ham xuddi shunday: Bir nechta vazifalarni (masalan: so'rovlar, fayl o'qish yoki boshqa kutish jarayonlari) ketma-ket bajarish o'rniga, bir vaqtning o'zida boshqarish, tizimni tez va samarali ishlashiga olib keladi. Concurrency deganda vazifalarni bir vaqtning o'zida boshqarish tushuniladi, lekin bu har doim parallel ishlash degani emas. Sodda qilib aytganda:

  • Concurrency bu bir nechta vazifani birdaniga boshqarish: tizim bir vazifani bajarib, keyin ikkinchisiga o'tadi, keyin uchinchisiga, va hokazo. Juda tez-tez almashib ishlaydi. Bunda ko'pincha bitta protsessor ishlatiladi, lekin ishlash navbat bilan bo'ladi (garchi bizga "bir vaqtda bo'layotgandek" ko'rinsa ham).

  • Parallelism bu bir nechta vazifani haqiqiy bir vaqtda bajarish: masalan, sizda bir nechta protsessor yadro (CPU core) bo'lsa, ular har biri alohida vazifani bir paytda bajaradi.

Misol:

  • Concurrency: bir odam idishlarni yuvadi, o'rtada telefoniga qaraydi, keyin ovqat pishiradi, keyin yana idish yuvadi. (Har bir ishga navbat bilan o'tadi.)
  • Parallelism: ikki odam biri idishlarni yuvadi, biri ovqat pishiradi. (Ikkala ish bir vaqtda ketmoqda.)

Xulosa:

  • Concurrency - bu tez vazifalarni almashish va boshqarish,
  • Parallelism - bu vazifalarni haqiqiy bir vaqtda bajarish.