Ruby เป็นเธรดเดี่ยวหรือไม่?
Ruby เป็นเธรดเดี่ยวหรือไม่?

วีดีโอ: Ruby เป็นเธรดเดี่ยวหรือไม่?

วีดีโอ: Ruby เป็นเธรดเดี่ยวหรือไม่?
วีดีโอ: มีอะไรน่าสนใจใน Ruby on Rails ver. 6 | Tech Monday EP.1 2024, อาจ
Anonim

คำตอบสั้นๆ คือ ใช่ พวกเขาคือ เกลียวเดียว . คำตอบยาวขึ้นอยู่กับ JRuby เป็น มัลติเธรด และสามารถรันใน tomcat ได้เหมือนกับโค้ด java อื่น ๆ MRI (ค่าเริ่มต้น ทับทิม ) และ Python ทั้งคู่มี GIL (Global Interpreter Lock) และเป็นเช่นนั้น เกลียวเดียว.

ในลักษณะนี้ Ruby on Rails เป็นแบบเธรดเดียวหรือไม่

เป็นผลให้แม้ ราง ตัวเองคือ เกลียว -safe ตั้งแต่เวอร์ชั่น 2.2 ยังไม่มี multi- ที่ดี เกลียว เซิร์ฟเวอร์สำหรับมันบนเซิร์ฟเวอร์ Windows และคุณจะได้ผลลัพธ์ที่ดีที่สุดโดยการรันบนเซิร์ฟเวอร์ *nix โดยใช้หลายกระบวนการ/ เดี่ยว - เกลียว แบบจำลองการทำงานพร้อมกัน ราง เป็นกรอบคือ เกลียว -ปลอดภัย. ดังนั้นคำตอบคือใช่!

ต่อจากนี้ คำถามคือ ทำไม Python ถึงเป็น single thread? ล็อคนี้ป้องกันการดำเนินการหลายเธรดพร้อมกันใน Python ล่าม. แต่ละ เกลียว ที่อยากวิ่งต้องรอให้ GIL ออกให้อีกตัว เกลียว ซึ่งหมายความว่าหลาย- เธรด Python แอปพลิเคชันเป็นจริง เกลียวเดียว.

ยังถามอีกว่าทับทิมมัลติเธรดหรือไม่

NS มัลติเธรด โปรแกรมมีมากกว่าหนึ่งรายการ เกลียว ของการดำเนินการ ทับทิม ทำให้เขียนง่าย หลาย - เกลียว โปรแกรมที่มี เกลียว ระดับ. ทับทิมทับทิม เป็นวิธีที่มีน้ำหนักเบาและมีประสิทธิภาพเพื่อให้เกิดการทำงานพร้อมกันในโค้ดของคุณ

รูบี้มีกิลไหม?

MRI ล็อกล่ามสากล มี Global Interpreter Lock มักเรียกกันว่า GIL , และ มี ความเข้าใจในระดับสูงเป็นสิ่งสำคัญที่จะต้องเข้าใจว่าเราเขียนโค้ดแบบมัลติเธรดใน ทับทิม . โดยทั่วไป GIL ป้องกันหลาย ทับทิม เธรดจากการดำเนินการพร้อมกัน

แนะนำ: