C में थ्रेड एट्रिब्यूट के स्टैक साइज को प्राप्त करने और सेट करने के लिए, हम निम्नलिखित थ्रेड एट्रिब्यूट्स का उपयोग करते हैं:
pthread_attr_getstacksize()
थ्रेड के स्टैक साइज को प्राप्त करने के लिए उपयोग किया जाता है। stacksize एट्रिब्यूट थ्रेड के स्टैक को एलोकेट किए गए न्यूनतम स्टैक साइज को देता है। सफल रन के मामले में, यह 0 देता है अन्यथा कोई भी मान देता है।
यह दो तर्क लेता है:
pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize)
- पहला pthread एट्रिब्यूट के लिए।
- दूसरा थ्रेड एट्रिब्यूट का आकार देने के लिए।
pthread_attr_setstacksize()
नए थ्रेड के स्टैक साइज को सेट करने के लिए उपयोग किया जाता है। stacksize एट्रिब्यूट थ्रेड के स्टैक को एलोकेट किए गए न्यूनतम स्टैक साइज को देता है। सफल रन के मामले में, यह 0 देता है अन्यथा यह कोई भी मान देता है।
यह दो तर्क लेता है:
pthread_attr_setstacksize(pthread_attr_t *attr, size_t *stacksize)
- पहला pthread एट्रिब्यूट के लिए।
- दूसरा बाइट्स में नए स्टैक का आकार देने के लिए।
एल्गोरिथ्म
शुरुआत स्टैक साइज घोषित करें और pthread एट्रिब्यूट a घोषित करें। pthread_attr_getstacksize() द्वारा वर्तमान स्टैकसाइज प्राप्त करें और प्रिंट करें। pthread_attr_setstacksize() द्वारा नया स्टैक साइज सेट करें और pthread_attr_getstacksize() द्वारा स्टैक साइज प्राप्त करें और प्रिंट करें। अंत
उदाहरण कोड
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main() {
size_t stacksize;
pthread_attr_t a;
pthread_attr_init(&a); // एट्रिब्यूट इनिशियलाइज़ करें
pthread_attr_getstacksize(&a, &stacksize);
printf("वर्तमान स्टैक साइज = %zu\n", stacksize);
pthread_attr_setstacksize(&a, 67626);
pthread_attr_getstacksize(&a, &stacksize);
printf("नया स्टैक साइज = %zu\n", stacksize);
pthread_attr_destroy(&a); // एट्रिब्यूट नष्ट करें
return 0;
}
आउटपुट
वर्तमान स्टैक साइज = 8388608 नया स्टैक साइज = 67626
नोट: मूल कोड में pthread_attr_init() और pthread_attr_destroy() नहीं थे जो आवश्यक हैं। आउटपुट सिस्टम पर निर्भर करता है।