Asynchronous method invocation
ಮಲ್ಟಿಥ್ರೆಡ್ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ, ಅಸಿಂಕ್ರೋನಸ್ ಮೆಥಡ್ ಇನ್ವೊಕೇಷನ್ (ಎಎಂಐ), ಇದನ್ನು ಅಸಿಂಕ್ರೋನಸ್ ಮೆಥಡ್ ಕಾಲ್ಗಳು ಅಥವಾ ಅಸಿಂಕ್ರೋನಸ್ ಪ್ಯಾಟರ್ನ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ, ಇದು ಕರೆಯಲ್ಪಡುವ ಕೋಡ್ ಮುಗಿಸಲು ಕಾಯುತ್ತಿರುವಾಗ ಕರೆ ಸೈಟ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸದ ವಿನ್ಯಾಸ ಮಾದರಿಯಾಗಿದೆ. ಬದಲಾಗಿ, ಉತ್ತರ ಬಂದಾಗ ಕರೆ ಮಾಡುವ ಥ್ರೆಡ್ಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ. ಉತ್ತರಕ್ಕಾಗಿ ಮತ ಚಲಾಯಿಸುವುದು ಒಂದು ಅನಪೇಕ್ಷಿತ ಆಯ್ಕೆಯಾಗಿದೆ. ಹಿನ್ನೆಲೆ ಎಎಂಐ ಎಂಬುದು ವಸ್ತುವಿನ ದೀರ್ಘಕಾಲದ ಸಂಭಾವ್ಯ ವಿಧಾನಗಳ ಅಸಿಂಕ್ರೊನಸ್ ಆಹ್ವಾನಕ್ಕಾಗಿ ವಿನ್ಯಾಸದ ಮಾದರಿಯಾಗಿದೆ. ಇದು 1996ರಲ್ಲಿ ಅಲನ್ ವರ್ಮ್ಯುಲೆನ್ ವಿವರಿಸಿದ ಐಒಯು ("ನಾನು ನಿಮಗೆ ಋಣಿಯಾಗಿದ್ದೇನೆ") ಮಾದರಿಯನ್ನು ಹೋಲುತ್ತದೆ. ಹೆಚ್ಚಿನ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಕರೆಯಲ್ಪಡುವ ವಿಧಾನವನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಅಂದರೆ. ಮರಣದಂಡನೆಯ ದಾರದಲ್ಲಿ ಅದನ್ನು ಆಹ್ವಾನಿಸಲಾಗುತ್ತದೆ. ವಿಧಾನವು ಪೂರ್ಣಗೊಳ್ಳಲು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಂಡರೆ, ಉದಾಹರಣೆಗೆ. ಇದು ಅಂತರ್ಜಾಲದ ಮೂಲಕ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿರುವುದರಿಂದ, ಕರೆ ಮಾಡುವ ದಾರವನ್ನು ವಿಧಾನವು ಮುಗಿಯುವವರೆಗೆ ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ಅಪೇಕ್ಷಿಸದಿದ್ದಾಗ, "ವರ್ಕರ್ ಥ್ರೆಡ್" ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ಅಲ್ಲಿಂದ ವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸಲು ಸಾಧ್ಯವಿದೆ. ಹೆಚ್ಚಿನ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರಿಸರದಲ್ಲಿ ಇದಕ್ಕೆ ಅನೇಕ ಸಾಲುಗಳ ಕೋಡ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಅನೇಕ ಎಳೆಗಳನ್ನು ರಚಿಸುವುದರಿಂದ ಉಂಟಾಗುವ ಓವರ್ಹೆಡ್ ಅನ್ನು ತಪ್ಪಿಸಲು ಕಾಳಜಿ ವಹಿಸಿದರೆ. ಎಎಂಐ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತದೆ, ಇದು "ಅಸಿಂಕ್ರೋನಸ್" ರೂಪಾಂತರದೊಂದಿಗೆ ದೀರ್ಘಾವಧಿಯ ("ಸಿಂಕ್ರೋನಸ್") ಆಬ್ಜೆಕ್ಟ್ ವಿಧಾನವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ, ಅದು ತಕ್ಷಣವೇ ಹಿಂತಿರುಗುತ್ತದೆ, ಜೊತೆಗೆ ಹೆಚ್ಚುವರಿ ವಿಧಾನಗಳು ಪೂರ್ಣಗೊಂಡ ಅಧಿಸೂಚನೆಯನ್ನು ಪಡೆಯುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ, ಅಥವಾ ನಂತರದ ಸಮಯದಲ್ಲಿ ಪೂರ್ಣಗೊಳ್ಳಲು ಕಾಯುತ್ತದೆ. ಎ. ಎಂ. ಐ. ಯ ಒಂದು ಸಾಮಾನ್ಯ ಬಳಕೆಯು ಸಕ್ರಿಯ ವಸ್ತುವಿನ ವಿನ್ಯಾಸದ ಮಾದರಿಯಲ್ಲಿದೆ. ಪರ್ಯಾಯಗಳು ಸಿಂಕ್ರೊನಸ್ ವಿಧಾನದ ಆಹ್ವಾನ ಮತ್ತು ಭವಿಷ್ಯದ ವಸ್ತುಗಳು. ಎಎಂಐ ಅನ್ನು ಬಳಸಬಹುದಾದ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಒಂದು ಉದಾಹರಣೆಯೆಂದರೆ ವೆಬ್ ಬ್ರೌಸರ್ ಆಗಿದ್ದು ಅದು ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ಲೋಡ್ ಮಾಡುವ ಮೊದಲೇ ವೆಬ್ ಪುಟವನ್ನು ಪ್ರದರ್ಶಿಸಬೇಕಾಗುತ್ತದೆ. ವಿಧಾನವು ಕಾರ್ಯವಿಧಾನದ ವಿಶೇಷ ಪ್ರಕರಣವಾಗಿರುವುದರಿಂದ, ಅಸಿಂಕ್ರೋನಸ್ ವಿಧಾನದ ಆಹ್ವಾನವು ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯವಿಧಾನದ ಕರೆಯ ವಿಶೇಷ ಪ್ರಕರಣವಾಗಿದೆ. ಅನುಷ್ಠಾನಗಳು ಜಾವಾದಲ್ಲಿ ಜಾವಾ ವರ್ಗದ ಫ್ಯೂಚರ್ಟಾಸ್ಕ್ ವರ್ಗವು ಅದೇ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಘಟನೆಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಮಾದರಿಯು ಎಎಂಐನ ಒಂದು ರೂಪಾಂತರವಾಗಿದ್ದು, ಅದರ ಅನುಷ್ಠಾನವು ಹೆಚ್ಚು ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಆದರೆ ಸಾಫ್ಟ್ವೇರ್ ಘಟಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವ ವಸ್ತುಗಳಿಗೆ ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ. . NET ಫ್ರೇಮ್ವರ್ಕ್ ಅಸಿಂಕ್ರೋನಸ್ ಪ್ರೊಗ್ರಾಮಿಂಗ್ ಮಾಡೆಲ್ (ಎಪಿಎಂ) ಮಾದರಿ (. NET ಫ್ರೇಮ್ವರ್ಕ್ 2ರ ಮೊದಲು ಬಳಸಲಾಗುತ್ತಿತ್ತು) ಈವೆಂಟ್-ಆಧಾರಿತ ಅಸಿಂಕ್ರೋನಸ್ ಪ್ಯಾಟರ್ನ್ (ಇಎಪಿ) (. NET ಫ್ರೇಮ್ವರ್ಕ್ 2ರಲ್ಲಿ ಬಳಸಲಾಗುತ್ತಿತ್ತು) ಟಾಸ್ಕ್-ಆಧಾರಿತ ಅಸಿಂಕ್ರೋನಸ್ ಪ್ಯಾಟರ್ನ್ (ಟಿಎಪಿ) (. NET ಫ್ರೇಮ್ವರ್ಕ್ 4ರಲ್ಲಿ ಬಳಸಲಾಗುತ್ತಿತ್ತು) ಉದಾಹರಣೆ. ಸಾಧನೆ ವಿಧಾನವನ್ನು ನೀಡಿದರೆ, ಒಬ್ಬರು ಎರಡು ಹೊಸ ವಿಧಾನಗಳನ್ನು ಸೇರಿಸುತ್ತಾರೆಃ ವರ್ಗ ಉದಾಹರಣೆ {ಫಲಿತಾಂಶ ಸಾಧನೆ (ಆರ್ಜಿಎಸ್.) ಐಎಸಿಂಕ್ರೆಸಲ್ಟ್ ಬಿಗಿನ್ಅಕ್ಂಪ್ಲಿಷ್ (ಆರ್ಜಿಎಸ್.) ಫಲಿತಾಂಶ ಅಂತ್ಯ ಸಾಧನೆ (ಐಎಸಿಂಕ್ರೆಸಲ್ಟ್ ಎ).} ಬಿಗಿನ್ಅಕ್ಂಪ್ಲಿಶ್ಗೆ ಕರೆ ಮಾಡಿದ ನಂತರ, ಕ್ಲೈಂಟ್ ತಕ್ಷಣವೇ ಅಸಿಂಕ್ರೆಸಲ್ಟ್ (ಇದು ಐಎಸಿಂಕ್ರೆಸಲ್ಟ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ) ರೀತಿಯ ವಸ್ತುವನ್ನು ಪಡೆಯುತ್ತಾನೆ, ಆದ್ದರಿಂದ ಇದು ಸಂಬಂಧವಿಲ್ಲದ ಕೆಲಸದೊಂದಿಗೆ ಕರೆ ಥ್ರೆಡ್ ಅನ್ನು ಮುಂದುವರಿಸಬಹುದು. ಸರಳವಾದ ಸಂದರ್ಭದಲ್ಲಿ, ಅಂತಿಮವಾಗಿ ಅಂತಹ ಯಾವುದೇ ಕೆಲಸ ಇರುವುದಿಲ್ಲ, ಮತ್ತು ಕ್ಲೈಂಟ್ ಎಂಡ್ಅಕ್ಕಂಪ್ಲಿಶ್ಗೆ ಕರೆ ಮಾಡುತ್ತಾರೆ (ಹಿಂದೆ ಸ್ವೀಕರಿಸಿದ ವಸ್ತುವನ್ನು ಹಾದುಹೋಗುವುದು), ಇದು ವಿಧಾನವು ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಮತ್ತು ಫಲಿತಾಂಶವು ಲಭ್ಯವಾಗುವವರೆಗೆ ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಅಸಿಂಕ್ರೆಸಲ್ಟ್ ಆಬ್ಜೆಕ್ಟ್ ಸಾಮಾನ್ಯವಾಗಿ ದೀರ್ಘಾವಧಿಯ ವಿಧಾನವು ಈಗಾಗಲೇ ಪೂರ್ಣಗೊಂಡಿದೆಯೇ ಎಂದು ಪ್ರಶ್ನಿಸಲು ಕ್ಲೈಂಟ್ಗೆ ಅನುವು ಮಾಡಿಕೊಡುವ ಕನಿಷ್ಠ ಒಂದು ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆಃ ಇಂಟರ್ಫೇಸ್ IAsyncResult {bool HassCompleated ().} ದೀರ್ಘಾವಧಿಯ ವಿಧಾನವು ಪೂರ್ಣಗೊಂಡಾಗ ಆಹ್ವಾನಿಸಬೇಕಾದ ಕಾಲ್ ಬ್ಯಾಕ್ ವಿಧಾನವನ್ನು ಬಿಗಿನ್ಅಕ್ಕಂಪ್ಲಿಷ್ಗೆ ರವಾನಿಸಬಹುದು. ದೀರ್ಘಾವಧಿಯ ವಿಧಾನದ ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಲು ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಎಂಡ್ಅಕ್ಕಂಪ್ಲಿಷ್ ಎಂದು ಕರೆಯುತ್ತದೆ. ಕಾಲ್ಬ್ಯಾಕ್ ಕಾರ್ಯವಿಧಾನದೊಂದಿಗಿನ ಒಂದು ಸಮಸ್ಯೆಯೆಂದರೆ, ಕಾಲ್ಬ್ಯಾಕ್ ಕಾರ್ಯವನ್ನು ಸ್ವಾಭಾವಿಕವಾಗಿ ವರ್ಕರ್ ಥ್ರೆಡ್ನಲ್ಲಿ (ಮೂಲ ಕರೆ ಥ್ರೆಡ್ಗಿಂತ) ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ಓಟದ ಪರಿಸ್ಥಿತಿಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. . NET ಫ್ರೇಮ್ವರ್ಕ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ನಲ್ಲಿ, ಈವೆಂಟ್-ಆಧಾರಿತ ಅಸಿಂಕ್ರೋನಸ್ ಪ್ಯಾಟರ್ನ್ ಎಂಬ ಪದವು ಪರ್ಯಾಯ API ಶೈಲಿಯನ್ನು (. NET 2.0 ರಿಂದ ಲಭ್ಯವಿದೆ) ಸೂಚಿಸುತ್ತದೆ, ಇದು ಬಿಗಿನ್ಅಕ್ಕಂಪ್ಲಿಷ್ ಬದಲಿಗೆ ಅಕಂಪ್ಲಿಶ್ಅಸ್ಕಿಂಕ್ ಎಂಬ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ. ಒಂದು ಬಾಹ್ಯ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಈ ಶೈಲಿಯಲ್ಲಿ ದೀರ್ಘಕಾಲದ ವಿಧಾನದ ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ನೇರವಾಗಿ ಕಾಲ್ಬ್ಯಾಕ್ ವಿಧಾನಕ್ಕೆ ರವಾನಿಸಲಾಗುತ್ತದೆ. ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿ, ಎಪಿಐ ಕಾಲ್ ಬ್ಯಾಕ್ ವಿಧಾನವನ್ನು ಚಲಾಯಿಸಲು ವಿಶೇಷ ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ (ಇದು ಅಕ್ಂಪ್ಲಿಷ್ ಕಾಂಪ್ಲಿಟೆಡ್ ಪ್ರಕಾರದ ಈವೆಂಟ್ ಆಬ್ಜೆಕ್ಟ್ನಲ್ಲಿ ಇರುತ್ತದೆ) ಅದೇ ಥ್ರೆಡ್ನಲ್ಲಿ ಬಿಗಿನ್ಅಕ್ಂಪ್ಲಿಷ್ ಅನ್ನು ಕರೆಯಲಾಗುತ್ತಿತ್ತು. ಇದು ಓಟದ ಪರಿಸ್ಥಿತಿಗಳ ಅಪಾಯವನ್ನು ನಿವಾರಿಸುತ್ತದೆ, ಇದು ಎಪಿಐ ಅನ್ನು ಬಳಸಲು ಸುಲಭವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಸಾಫ್ಟ್ವೇರ್ ಘಟಕಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ; ಮತ್ತೊಂದೆಡೆ ಮಾದರಿಯ ಈ ಅನುಷ್ಠಾನವು ಹೆಚ್ಚುವರಿ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆ ಮತ್ತು ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಓವರ್ಹೆಡ್ನೊಂದಿಗೆ ಬರುತ್ತದೆ. ಸಿ #ಥ್ರೆಡ್ಸ್ (ಕಂಪ್ಯೂಟಿಂಗ್) ಸಾಫ್ಟ್ವೇರ್ ವಿನ್ಯಾಸ ಮಾದರಿಗಳಲ್ಲಿ ಅಸಿಂಕ್ರೋನಸ್ ವಿಧಾನದ ಕರೆಗಳನ್ನು ಬಳಸುವುದು