𝗚𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗮𝗰𝗸𝗮𝗴𝗲

చాలా మంది Go డెవలపర్లు context.Context గురించి పూర్తిగా అర్థం చేసుకోకుండానే దానిని ఉపయోగిస్తారు. HTTP హ్యాండ్లర్లు, డేటాబేస్ కాల్స్ మరియు SDK మెథడ్స్‌లో మీరు దీనిని చూడవచ్చు. చాలా మంది బిగినర్స్ ప్రతిచోటా context.Background() ను ఉపయోగిస్తారు.

ఈ తప్పు వల్ల సమస్యలు తలెత్తుతాయి. ఒక Lambda ఫంక్షన్ దాని టైమ్ అవుట్ (timeout) దాటిన తర్వాత కూడా హ్యాంగ్ (hang) అవ్వచ్చు. యూజర్ డిస్‌కనెక్ట్ అయిన తర్వాత కూడా ఒక డేటాబేస్ క్వెరీ రన్ అవుతూనే ఉండవచ్చు.

Context మీ కోడ్ ద్వారా క్యాన్సిలేషన్ సిగ్నల్స్ (cancellation signals) మరియు డెడ్‌లైన్స్‌ను (deadlines) పంపడానికి అనుమతిస్తుంది. ఇది ఈ మూడు ప్రశ్నలకు సమాధానం ఇవ్వడంలో మీకు సహాయపడుతుంది:

• ఈ ఆపరేషన్ కొనసాగించాలా? • ఈ ఆపరేషన్ ఎప్పటికి ముగియాలి? • ఈ కాల్‌తో పాటు ఏ రిక్వెస్ట్ డేటా ప్రవహిస్తుంది?

Context ఇంటర్‌ఫేస్‌లో నాలుగు మెథడ్స్ ఉన్నాయి:

Context ఒక చెట్టు (tree) లాగా పనిచేస్తుంది. మీరు ఒక పేరెంట్ context తో ప్రారంభించి, దాని నుండి చైల్డ్ (child) contextలను సృష్టిస్తారు.

Root Contexts:

Child Contexts:

ముఖ్యమైన నియమం: ఎల్లప్పుడూ cancel ఫంక్షన్‌ను కాల్ చేయండి. చైల్డ్ contextను సృష్టించిన వెంటనే defer cancel() ను ఉపయోగించండి. మీరు దీనిని వదిలేస్తే, మెమరీ లీక్స్ (memory leaks) ఏర్పడతాయి.

Best Practices:

ఒక పేరెంట్ context క్యాన్సిల్ అయినప్పుడు, దానిలోని అన్ని చైల్డ్ contextలు ఆటోమేటిక్‌గా క్యాన్సిల్ అవుతాయి. దీనివల్ల మీ మొత్తం సిస్టమ్‌లోని ఆపరేషన్ల గొలుసును (chain of operations) సులభంగా ఆపవచ్చు.

Source: https://dev.to/ferztyle/go-context-package-37nk