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

ಹೆಚ್ಚಿನ Go డెవలపರು context.Context ಅನ್ನು ಸರಿಯಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದೆ ಬಳಸುತ್ತಾರೆ. ನೀವು ಇದನ್ನು HTTP handlers, database calls ಮತ್ತು SDK methodsಗಳಲ್ಲಿ ನೋಡಬಹುದು. ಅನೇಕ ಆರಂಭಿಕರು ಎಲ್ಲೆಡೆ context.Background() ಅನ್ನು ಬಳಸುತ್ತಾರೆ.

ಈ ತಪ್ಪಿನಿಂದ ಸಮಸ್ಯೆಗಳು ಉಂಟಾಗಬಹುದು. ಒಂದು Lambda function ತನ್ನ timeout ಸಮಯ ಮೀರಿ hang ಆಗಬಹುದು. ಬಳಕೆದಾರರು ಡಿಸ್ಕನೆಕ್ಟ್ ಆದ ನಂತರವೂ ಒಂದು database query ಚಾಲನೆಯಲ್ಲೇ ಇರಬಹುದು.

Context ನಿಮ್ಮ ಕೋಡ್ ಮೂಲಕ cancellation signals ಮತ್ತು deadlines ಅನ್ನು ಕಳುಹಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಈ ಮೂರು ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ:

• ಈ operation ಚಾಲನೆಯಲ್ಲೇ ಇರಬೇಕೇ? • ಈ operation ಯಾವಾಗ ಮುಗಿಯಬೇಕು? • ಈ call ನೊಂದಿಗೆ ಯಾವ request data ಹರಿಯುತ್ತದೆ?

Context interface ನಲ್ಲಿ ನಾಲ್ಕು methods ಇವೆ:

Context ಒಂದು ಮರದಂತೆ (tree) ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನೀವು ಒಂದು parent context ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ, ಅದರ ಮಕ್ಕಳು (children) context ಗಳನ್ನು ರಚಿಸುತ್ತೀರಿ.

Root Contexts:

Child Contexts:

ಪ್ರಮುಖ ನಿಯಮ: ಯಾವಾಗಲೂ cancel function ಅನ್ನು ಕರೆಯಿರಿ. child context ರಚಿಸಿದ ತಕ್ಷಣ defer cancel() ಬಳಸಿ. ನೀವು ಇದನ್ನು ಬಿಟ್ಟರೆ, memory leaks ಉಂಟಾಗಬಹುದು.

Best Practices:

ಒಂದು parent context cancel ಆದಾಗ, ಅದರ ಎಲ್ಲಾ children context ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ cancel ಆಗುತ್ತವೆ. ಇದು ನಿಮ್ಮ ಇಡೀ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿನ ಸಂಪೂರ್ಣ chain of operations ಅನ್ನು ನಿಲ್ಲಿಸುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.

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