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

பெரும்பாலான Go டெவலப்பர்கள் context.Context-ஐப் பற்றி முழுமையாகப் புரிந்துகொள்ளாமல் பயன்படுத்துகிறார்கள். HTTP handlers, database calls மற்றும் SDK methods ஆகியவற்றில் இதைக் காணலாம். பல தொடக்கநிலை டெவலப்பர்கள் எல்லா இடங்களிலும் context.Background()-ஐப் பயன்படுத்துகிறார்கள்.

இந்தத் தவறு சிக்கல்களை உண்டாக்கும். ஒரு Lambda function அதன் timeout காலத்தைத் தாண்டியும் இயங்கிக்கொண்டிருக்கலாம். ஒரு பயனர் துண்டிக்கப்பட்ட பின்னரும் (disconnect), ஒரு database query தொடர்ந்து இயங்கிக்கொண்டிருக்கலாம்.

Context உங்கள் குறியீடு (code) வழியாக ரத்து செய்யும் சிக்னல்கள் (cancellation signals) மற்றும் காலக்கெடுவை (deadlines) அனுப்ப அனுமதிக்கிறது. இது பின்வரும் மூன்று கேள்விகளுக்குப் பதிலளிக்க உதவுகிறது:

• இந்தச் செயல்பாடு தொடர்ந்து இயங்க வேண்டுமா? • இந்தச் செயல்பாடு எப்பொழுது முடிய வேண்டும்? • இந்த அழைப்புடன் (call) எந்தக் கோரிக்கைத் தரவு (request data) செல்கிறது?

Context interface-இல் நான்கு முறைகள் (methods) உள்ளன:

Context ஒரு மரம் (tree) போலச் செயல்படுகிறது. நீங்கள் ஒரு parent context-இல் தொடங்கி, அதன் கீழ் child contexts-களை உருவாக்குகிறீர்கள்.

Root Contexts:

Child Contexts:

மிக முக்கியமான விதி: எப்போதும் cancel function-ஐ அழைக்கவும். ஒரு child context-ஐ உருவாக்கியவுடன் உடனடியாக defer cancel()-ஐப் பயன்படுத்தவும். இதைத் தவிர்த்தால், memory leaks ஏற்படக்கூடும்.

Best Practices:

ஒரு parent context ரத்து செய்யப்படும்போது, அதன் அனைத்து child contexts-களும் தானாகவே ரத்து செய்யப்படும். இது உங்கள் முழு அமைப்பிலும் (system) உள்ள ஒரு தொடர்ச்சியான செயல்பாடுகளை (chain of operations) எளிதாக நிறுத்த உதவுகிறது.

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