मैं एक साझा सर्किट के रूप में (गोलाकार) कतार (सी में) को डिजाइन/कार्यान्वित करने का प्रयास कर रहा हूं ताकि इसे एकाधिक थ्रेड/प्रक्रियाओं के बीच साझा किया जा सके।एक साझा मेमोरी होने के लिए एक कतार डिजाइन करना
typedef struct _q {
int q_size;
int q_front;
int q_rear;
int *q_data;
}queue;
कौन सा निम्नलिखित कार्यों का समर्थन करता है:
int empty_q(queue *q);
int display_q(queue *q);
int create_q(queue **q, int size);
int delete_q(queue **q);
int enqueue(queue *q, int data);
int dequeue(queue *q, int *data);
प्रति कतार आकार उपयोगकर्ता द्वारा उल्लेख किया है, q_data के लिए स्मृति create_q में आवंटित किया जाएगा
कतार संरचना इस प्रकार है()।
प्रश्न: "sys/shm.h" में प्रदान किए गए सिस्टम फ़ंक्शंस का उपयोग करके इस कतार के लिए साझा स्मृति कैसे बनाएं? Shmget(), shmat(), shmctl(), आदि का उपयोग कर कतार डेटा-संरचना के लिए साझा मेमोरी बनाने/हटाने/पुनर्प्राप्त/हटाने के लिए कोई भी कोड स्निपेट/उदाहरण बहुत मददगार होगा।
यदि आप कतार जैसी तंत्र का उपयोग करके प्रक्रियाओं को संवाद करना चाहते हैं, तो [संदेश कतार] (http://www.it.uom.gr/teaching/c_marshall/node25.html) का उपयोग करना बेहतर नहीं होगा? एक ही प्रक्रिया से धागे के पार, एक महत्वपूर्ण खंड द्वारा संरक्षित मानक कतार –
@dario_ramos संदेश कतार इस समस्या के लिए एक आदर्श समाधान होगा .. लेकिन मैं एक कतार का उपयोग करके उदाहरण देने की कोशिश कर रहा हूं कि कैसे संलग्न किया जाए एक साझा स्मृति के साथ एक डेटा संरचना। –
उस स्थिति में, जब मैंने यूनिक्स आईपीसी के साथ गड़बड़ की, तो मैंने [यूनिक्स आईपीसी के लिए बीज की मार्गदर्शिका] (http://beej.us/guide/bgipc/) का पालन किया। इसमें कुछ चुटकुले भी हैं! आप सीधे [साझा स्मृति अनुभाग] (http://beej.us/guide/bgipc/output/html/multipage/shm.html) –