ແຕ່ລະກະທູ້ຂອງເຈົ້າຈະໄດ້ຮັບໜ່ວຍຄວາມຈຳຈຳນວນນີ້ (10MB) ທີ່ຖືກມອບໝາຍໃຫ້ກັບ stack ຂອງມັນ. ດ້ວຍໂປລແກລມ 32bit ແລະພື້ນທີ່ທີ່ຢູ່ສູງສຸດ 4GB ເທົ່ານັ້ນ ສູງສຸດພຽງແຕ່ 4096MB/10MB = 409 ກະທູ້!!!
ມີການຈໍາກັດຈໍານວນຫົວຂໍ້ບໍ?
ການສ້າງກະທູ້ຊ້າລົງ
ສໍາລັບ 32-bit JVM, ຂະຫນາດ stack ປະກົດວ່າຈໍາກັດຈໍານວນຂອງ threads ທີ່ທ່ານສາມາດສ້າງ. ນີ້ອາດຈະເປັນຍ້ອນພື້ນທີ່ທີ່ຢູ່ຈໍາກັດ. ໃນກໍລະນີໃດກໍ່ຕາມ, ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ໂດຍແຕ່ລະ stack ຂອງ thread ເພີ່ມຂຶ້ນ. ຖ້າທ່ານມີ stack ຂອງ 128KB ແລະທ່ານມີ 20K threads ມັນຈະໃຊ້ 2.5 GB ຂອງຫນ່ວຍຄວາມຈໍາ virtual.
ຂະບວນການສາມາດຈັດການໄດ້ຈັກກະທູ້?
ກະທູ້ແມ່ນຫົວ ໜ່ວຍ ຂອງການປະຕິບັດພາຍໃນຂະບວນການ. ຂະບວນການສາມາດມີທຸກບ່ອນຈາກ ພຽງແຕ່ຫນຶ່ງກະທູ້ກັບຫຼາຍກະທູ້.
ຂະບວນການສາມາດມີຫຼາຍຫົວຂໍ້?
ຂະບວນການ ສາມາດມີຫຼາຍຫົວຂໍ້, ການປະຕິບັດທັງຫມົດໃນເວລາດຽວກັນ. ມັນເປັນຫົວຫນ່ວຍການປະຕິບັດໃນການດໍາເນີນໂຄງການພ້ອມກັນ. ກະທູ້ມີນ້ຳໜັກເບົາ ແລະສາມາດຈັດການໄດ້ຢ່າງເປັນອິດສະຫຼະໂດຍຕົວກຳນົດເວລາ. … ຫຼາຍຫົວຂໍ້ແບ່ງປັນຂໍ້ມູນເຊັ່ນ: ຂໍ້ມູນ, ລະຫັດ, ໄຟລ໌, ແລະອື່ນໆ.
ຂ້ອຍຈະເພີ່ມຈໍານວນກະທູ້ສູງສຸດໃນ Linux ໄດ້ແນວໃດ?
ດັ່ງນັ້ນ, ຈໍານວນຂອງກະທູ້ຕໍ່ຂະບວນການສາມາດເພີ່ມຂຶ້ນໂດຍ ເພີ່ມຄວາມຊົງຈໍາ virtual ທັງຫມົດຫຼືໂດຍການຫຼຸດຜ່ອນຂະຫນາດ stack. ແຕ່, ການຫຼຸດລົງຂະຫນາດ stack ຫຼາຍເກີນໄປສາມາດນໍາໄປສູ່ຄວາມລົ້ມເຫຼວຂອງລະຫັດເນື່ອງຈາກ stack overflow ໃນຂະນະທີ່ຫນ່ວຍຄວາມຈໍາ virtual ສູງສຸດແມ່ນເທົ່າກັບຫນ່ວຍຄວາມຈໍາ swap. *ປ່ຽນຄ່າໃໝ່ດ້ວຍຄ່າທີ່ເຈົ້າຕ້ອງການໃສ່ເປັນຂີດຈຳກັດ.
JVM ສາມາດສ້າງໄດ້ຈັກກະທູ້?
ແຕ່ລະເຊີບເວີ JVM ສາມາດມີສູງສຸດ ກະທູ້ 256 ເພື່ອດໍາເນີນການຄໍາຮ້ອງສະຫມັກ Java.
ກະທູ້ໄວກວ່າຂະບວນການບໍ?
ຂະບວນການ: ເນື່ອງຈາກວ່າການສໍາເນົາຫນ່ວຍຄວາມຈໍາພຽງເລັກນ້ອຍຫຼາຍ (ພຽງແຕ່ stack thread), ກະທູ້ເລີ່ມຕົ້ນໄວກວ່າຂະບວນການ. … ແຄສຂອງ CPU ແລະສະພາບການຂອງໂປຣແກຣມສາມາດຖືກຮັກສາໄວ້ລະຫວ່າງກະທູ້ໃນຂະບວນການໃດໜຶ່ງ, ແທນທີ່ຈະຖືກໂຫຼດຄືນໃໝ່ຄືກັບກໍລະນີປ່ຽນ CPU ໄປເປັນຂະບວນການອື່ນ.
ຂະບວນການສາມາດມີກະທູ້ຫຼາຍປານໃດໃນ Windows?
ບໍ່ມີຂອບເຂດຈໍາກັດທີ່ຂ້ອຍຮູ້, ແຕ່ມີສອງຂໍ້ຈໍາກັດການປະຕິບັດ: ພື້ນທີ່ virtual ສໍາລັບ stacks ໄດ້. ຕົວຢ່າງໃນ 32-bits ພື້ນທີ່ virtual ຂອງຂະບວນການແມ່ນ 4GB, ແຕ່ວ່າມີພຽງແຕ່ປະມານ 2G ເທົ່ານັ້ນທີ່ມີສໍາລັບການນໍາໃຊ້ທົ່ວໄປ. ໂດຍຄ່າເລີ່ມຕົ້ນແຕ່ລະກະທູ້ຈະສະຫງວນພື້ນທີ່ stack 1MB, ດັ່ງນັ້ນມູນຄ່າສູງສຸດແມ່ນ 2000 threads.
ກະທູ້ແບ່ງປັນຕົວອະທິບາຍໄຟລ໌ບໍ?
ຕົວອະທິບາຍໄຟລ໌ຖືກແບ່ງປັນລະຫວ່າງກະທູ້. ຖ້າຫາກວ່າທ່ານຕ້ອງການການຊົດເຊີຍ "ກະທູ້ສະເພາະ", ເປັນຫຍັງຈຶ່ງບໍ່ມີແຕ່ລະກະທູ້ທີ່ໃຊ້ຕົວອະທິບາຍໄຟລ໌ທີ່ແຕກຕ່າງກັນ (ເປີດ (2) ຫຼາຍຄັ້ງ)?
ຂະບວນການສາມາດມີ 0 ກະທູ້ໄດ້ບໍ?
ໂປເຊດເຊີປະຕິບັດການກະທູ້, ບໍ່ແມ່ນຂະບວນການ, ດັ່ງນັ້ນແຕ່ລະຄໍາຮ້ອງສະຫມັກມີຢ່າງຫນ້ອຍຫນຶ່ງຂະບວນການ, ແລະຂະບວນການສະເຫມີມີຢ່າງຫນ້ອຍຫນຶ່ງ thread ຂອງການປະຕິບັດ, ເອີ້ນວ່າ thread ຕົ້ນຕໍ. ເຖິງແມ່ນວ່າມັນເວົ້າຕໍ່ໄປວ່າ: ຂະບວນການສາມາດມີສູນ ຫຼືຫຼາຍກວ່າຫ້ອງແຖວດຽວ ແລະສູນຫຼືຫນຶ່ງອາພາດເມັນ multithreaded.
ສອງກະທູ້ສາມາດແລ່ນໃນເວລາດຽວກັນບໍ?
Concurrency ແລະ Parallelism
ໃນຂະບວນການ multithreaded ດຽວກັນໃນສະພາບແວດລ້ອມ multiprocessor ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ, ແຕ່ລະ thread ໃນຂະບວນການ ສາມາດດໍາເນີນການພ້ອມກັນກັບໂປເຊດເຊີແຍກຕ່າງຫາກ, ສົ່ງຜົນໃຫ້ການປະຕິບັດຂະຫນານ, ເຊິ່ງເປັນການປະຕິບັດພ້ອມໆກັນທີ່ແທ້ຈິງ.
ກະທູ້ດໍາເນີນການຂະຫນານບໍ?
ໃນ microprocessor ຫຼັກດຽວ (uP), ມັນເປັນໄປໄດ້ທີ່ຈະດໍາເນີນການຫຼາຍກະທູ້, ແຕ່ ບໍ່ຢູ່ໃນຂະຫນານ. ເຖິງແມ່ນວ່າແນວຄວາມຄິດຂອງກະທູ້ມັກຈະຖືກກ່າວເຖິງວ່າດໍາເນີນການໃນເວລາດຽວກັນ, ຕົວຈິງແລ້ວພວກມັນກໍາລັງແລ່ນຕິດຕໍ່ກັນຢູ່ໃນເວລາທີ່ຖືກຈັດສັນແລະຄວບຄຸມໂດຍລະບົບປະຕິບັດການ.