मैं क्लोज-टू-ओएस प्रोग्रामिंग तकनीकों में शामिल नहीं हूं, लेकिन जैसा कि मुझे पता है, जब पर्ल में समानांतर में कुछ करने की बात आती है तो पसंद के हथियार fork
और संभवतः कुछ उपयोगी मॉड्यूल बनाए जाते हैं। fork
के लिए डॉक पेज का कहना है:स्वतंत्र रूप से चलाने के लिए कोड के केवल एक हिस्से को अलग करने के लिए पर्ल तकनीक क्या हैं?
Does a fork(2) system call to create a new process running the same program at the same point.
परिणामस्वरूप, एक बड़ा अनुप्रयोग है कि स्मृति का एक बहुत और एक छोटे से कार्य के लिए fork
बुला खपत वहाँ 2 बड़े पर्ल प्रक्रियाओं हो जाएगा मतलब है होने, और दूसरा संसाधनों बर्बाद करेंगे बस कुछ सरल काम करने के लिए।
तो, सवाल यह है: (या कैसे fork
उपयोग करने के लिए, अगर यह एकमात्र तरीका है) क्या करना है क्रम स्वतंत्र रूप से और चल रहा कोड का एक अलग हिस्से में काफ़ी सिर्फ संसाधनों यह की जरूरत है पाने के लिए?
बस एक बहुत simpel उदाहरण:
use strict;
use warnings;
my @big_array = (1 .. 2000000); # at least 80 MB memory
sleep 10; # to have time to inspect easely the memory usage
fork();
sleep 10; # to have time to inspect easely the memory usage
और बच्चे प्रक्रिया की खपत 80 + एमबी भी।
स्पष्ट है: यह इस अलग कोड के लिए बातचीत करने के लिए महत्वपूर्ण नहीं है या किसी भी तरह उसके परिणाम का उपयोग करने के लिए, बस "कहने के लिए हे संभव हो सकता है, मेरे लिए पृष्ठभूमि में इस सरल कार्य चलाने के लिए और मुझे आगे बढ़ें मेरी इस बीच भारी काम ... और मेरे संसाधनों को बर्बाद मत करो! "भारी पर्ल आवेदन चलाते समय।
एक बाल प्रक्रिया अपने सभी माता-पिता के गुणों का वारिस करेगी। फोकिंग के साथ घूमने का कोई वास्तविक तरीका नहीं है, मुझे नहीं लगता। – squiguy
'कांटा' का उपयोग करना अनिवार्य नहीं है। कोई भी तकनीक स्वीकार्य होगी, यहां तक कि 'सिस्टम' को भी बुलाएगी। – ArtM