2010-08-16 10 views
6

ठीक है, मैं इसे समझने के हर तरीके से कोशिश कर रहा हूं।एरलांग - ग्लोबल वैरिएबल .. हाँ मुझे पता है, मुझे पता है

मुझे इस तालिका को वैश्विक होने की आवश्यकता है .. मुझे एहसास हुआ है कि मेरे कार्यक्रम के दायरे में टेबलिड पास करने के लिए यह बहुत कम कुशल है।

TableID = ets:new(tb, [set,public]), 
put({tableUniqueID}, TableID), 

तब मैं प्रयोग किया है::

get({tableUniqueID}) 

और एक ही समारोह में यह TableID रिटर्न ठीक ... अभी तक जब मैं

तो मैं एक नई तालिका बनाने तो यह देख करने की कोशिश की इसे किसी अन्य फ़ंक्शन में उपयोग करें, यह एक अपरिभाषित लौटाता है।

क्या ?? मैं सोचा था और एक प्रमुख वैश्विक बनाया रख ..

भी यह सब से पहले मैं आप इस तरह के रूप में एक मेज देखने फ़ंक्शन को कॉल करें "कर सकता है" का एहसास:

ets:lookup(get({tableUniqueID}), msgIn) 

यही बात, समारोह में काम करता है, बाहर नहीं है .. रखो हो जाओ समस्या ..

तो मैं एक और तरीका एक मेज देखने के लिए तालिका

ets:lookup(tb, msgIn) 

की परमाणु फोन करके किया जाएगा एहसास हुआ लेकिन इस कभी नहीं काम करता है, नहीं समारोह के अंदर, नहीं बाहर ..

तो मेरी मुख्य प्राथमिकता यह समझना होगा कि इसके परमाणु द्वारा एक टेबल को क्यों देखना संभव नहीं है। लेकिन यह कहता है कि मैनुअल सहित यह हर जगह सबसे अधिक है।

प्राप्त/रखो मैं बिना रह सकता था, जब तक मैं टेबल स्टोर कर सकता हूं, तब तालिका को इसके परमाणु पहचानकर्ता द्वारा लुकअप करें।

क्या कोई इस दुविधा पर प्रकाश डाल सकता है?

उत्तर

6

मुझे यह मिल गया !!

डॉक्स काश, अभी तक बेहतर देखने समारोह के तहत इस कहेंगे .. , जो कोई ETS पर ट्यूटोरियल लिखते हैं, या तो किताबें

समाधान

TableID = ets:new(tb, [set,public,named_table]) 

named_table है कि करने के लिए है महत्वपूर्ण हिस्सा

कुछ आदमी पृष्ठों के माध्यम से खुदाई, लेकिन

;)

+०१२३५१६४१०६१
4

आपकी समस्या का सही उत्तर वैश्विक तालिका का उपयोग नहीं करना है, बल्कि जानकारी के चारों ओर पास करना है। खासकर जब से आप अपने मूल प्रश्न में दक्षता का उल्लेख करते हैं। आप अपने कोड में एक भीड़ बिंदु बना रहे हैं जो किसी भी बहु कोर मशीन पर खराब प्रदर्शन करेगा।

एट्स टेबल को एक प्रक्रिया के रूप में कार्यान्वित किया गया है कि अन्य सभी प्रक्रियाओं को मूल्य प्राप्त करने के लिए कॉल करना होगा।

संबंधित मुद्दे