భాగస్వామ్య వనరులు, వైరుధ్యాలు, భాగస్వామ్య యాక్సెస్ - 1

"హాయ్, అమిగో! నేను మీకు వనరులను పంచుకోవడం గురించి చెప్పాలనుకుంటున్నాను. విభిన్న థ్రెడ్‌లలో, సహజంగా.

"బహుళ థ్రెడ్‌లతో పని చేస్తున్నప్పుడు ఏర్పడే సమస్యల గురించి మరియు వాటిని ఎలా పరిష్కరించాలి అనే దాని గురించి నేను మాట్లాడుతున్నాను. థ్రెడ్‌లను ఉపయోగించడం చెడ్డదని దీని అర్థం కాదు. థ్రెడ్‌లు చాలా శక్తివంతమైన సాధనం. వాస్తవానికి, అవి మీ ప్రోగ్రామ్‌ను వేగంగా మరియు మరింత వేగవంతం చేయడానికి మిమ్మల్ని అనుమతిస్తాయి. మరింత విశ్వసనీయమైనది. ప్రోగ్రామ్ ఎంత క్లిష్టంగా ఉంటే, అది ఎక్కువ థ్రెడ్‌లు మరియు వివిధ స్వతంత్ర భాగాలను కలిగి ఉంటుంది."

"ఒక ప్రోగ్రామ్‌ను స్వతంత్ర (వదులుగా జత చేయబడిన) భాగాలుగా విభజించడం చాలా ప్రయోజనకరంగా ఉంటుంది."

"మీ ప్రోగ్రామ్ అంతర్గతంగా 100 థ్రెడ్‌లుగా విభజించబడిందని ఊహించుకోండి. కానీ మీకు డ్యూయల్-కోర్ ప్రాసెసర్ మాత్రమే ఉంది. దీని అర్థం ఒక్కో కోర్‌లో సగటున 50 థ్రెడ్‌లు అమలు చేయబడతాయి."

"మీరు ప్రోగ్రామ్ యొక్క పనితీరును పెంచుకోవాల్సిన అవసరం ఉన్నట్లయితే, మీరు దాని కోసం డ్యూయల్-ప్రాసెసర్ సర్వర్ మరియు కొన్ని స్వీట్ ప్రాసెసర్‌లను కొనుగోలు చేస్తారు. దీని వలన మీరు 32 కోర్ల వరకు పొందవచ్చు, పనితీరులో 2-20 రెట్లు బూస్ట్ లభిస్తుంది. సంఖ్యను బట్టి ఇది నిజంగా స్వతంత్ర భాగాలుగా విభజించబడింది."

"ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్‌లో జావా ఆధిపత్యం చెలాయించడానికి ఇది ఒక కారణం. ఒక కంపెనీకి 20 మంది డెవలపర్‌లు వ్రాసిన సంక్లిష్టమైన అంతర్గత ప్రోగ్రామ్ ఉంటే, ఆప్టిమైజేషన్ ద్వారా ప్రోగ్రామ్ పనితీరును రెట్టింపు చేయడం కంటే మరొక సర్వర్‌ను కొనుగోలు చేయడం చాలా చౌకగా ఉంటుంది."

"కాబట్టి దాని గురించి ఏమిటి."

"కానీ! డెవలపర్ మరొక థ్రెడ్‌ని ఉపయోగించాలని నిర్ణయించుకున్న ప్రతిసారీ, అతను ఒక సమస్యను పరిష్కరిస్తాడు మరియు రెండింటిని సృష్టిస్తాడు. మరిన్ని ఎక్కువ థ్రెడ్‌లు ప్రోగ్రామ్ పనితీరును అనంతంగా పెంచవు."

"మొదట, ఏ ప్రోగ్రామ్ అయినా విభజించబడని పనిని కలిగి ఉంటుంది మరియు వివిధ థ్రెడ్‌లపై సమాంతరంగా నడుస్తుంది. రెండవది, అన్ని థ్రెడ్‌లు ఒకే ప్రాసెసర్‌లో అమలు చేయబడతాయి. మీ వద్ద ఎక్కువ థ్రెడ్‌లు ఉంటే, ప్రతి ఒక్కటి నెమ్మదిగా పని చేస్తుంది."

"మరియు, ముఖ్యంగా, థ్రెడ్‌లు తరచుగా ఒకే వస్తువులను ఉపయోగిస్తాయి (సాధారణంగా 'భాగస్వామ్య వనరులు' అని పిలుస్తారు)."

"ఉదాహరణకు, ఒక థ్రెడ్ అది పూర్తి చేసిన పనికి సంబంధించిన సమాచారాన్ని ఫైల్‌లో సేవ్ చేయాలనుకుంటోంది. అలాంటి అనేక థ్రెడ్‌లు ఉంటే మరియు అవి ఒకే ఫైల్‌కి సమాచారాన్ని వ్రాయాలనుకుంటే, అవి ఒకదానికొకటి జోక్యం చేసుకుంటాయి. ఫైల్‌గా మారకుండా నిరోధించడానికి గందరగోళంగా ఉన్న గజిబిజి, ఫైల్‌కు యాక్సెస్ పరిమితం చేయబడింది, అనగా ఒక థ్రెడ్ ఫైల్‌ను ఉపయోగిస్తుంటే, ఇతరులు వేచి ఉంటారు."

"అవును, నాకు గుర్తుంది. మీరు సింక్రొనైజ్ చేసిన కీవర్డ్‌ని ఉపయోగించి అలా చేస్తారు ."

"ఖఛ్చితంగా నిజం."

"మరియు థ్రెడ్‌లు వేర్వేరు ఫైల్‌లకు వ్రాస్తే?"

"అధికారికంగా, ఇవి వేర్వేరు వస్తువులు, కానీ అవి ఒకే హార్డ్ డ్రైవ్‌లో ఉండవచ్చు."

"కాబట్టి, ప్రాసెసర్ లోపల ఏదైనా సమాంతరంగా చేయడం నిజంగా సాధ్యమేనా?"

"సాంకేతికంగా, అవును, కానీ మీ థ్రెడ్‌కు దాని వద్ద ఉన్న డేటాతో పాటు ఏదైనా అవసరం అయిన వెంటనే, ఏదైనా ఇప్పటికే మరొక థ్రెడ్ ఆక్రమించబడి ఉండవచ్చు మరియు మీ థ్రెడ్ వేచి ఉండాలి."

"సరే, అలాంటప్పుడు నేనేం చేయాలి? నేను చాలా దారాలు వేయాలా వద్దా అని నాకు ఎలా తెలుసు?"

"ఇది మీ ప్రోగ్రామ్ ఆర్కిటెక్చర్ ద్వారా నేరుగా నిర్ణయించబడుతుంది. ప్రతి ప్రాజెక్ట్‌కి దాని స్వంత 'ఆర్కిటెక్ట్' ఉంటుంది, అతను ప్రోగ్రామ్‌లో ఉపయోగించిన అన్ని 'వనరులు' తెలుసు, వాటి పరిమితులను తెలుసు మరియు అవి ఎంత బాగా/పేలవంగా సమాంతరంగా ఉన్నాయి."

"మరియు నాకు తెలియకపోతే?"

"రెండు ఎంపికలు ఉన్నాయి:"

ఎ) చేసే వ్యక్తి పర్యవేక్షణలో పని చేయండి

బి) మీ స్వంతంగా గుర్తించడానికి కొన్ని గడ్డలను పొందండి

"నేను ఒక రోబోట్‌ని: నాకు గడ్డలు రావు - డెంట్‌లు మాత్రమే."

"సరే, అయితే, కొన్ని డెంట్లను పొందండి."

"నేను చూస్తున్నాను. ధన్యవాదాలు. నేను ఇప్పటికే ఆశ్చర్యానికి గురిచేసిన కొన్ని విషయాలను మీరు స్పష్టం చేసారు."