Deadlock prevention algorithms
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ, ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಪ್ರಕ್ರಿಯೆಗಳು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಹಂಚಿಕೆಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆಯಬೇಕಾದಾಗ ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವ ಕ್ರಮಾವಳಿಗಳನ್ನು ಏಕಕಾಲೀನ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಎರಡು ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಏಕಕಾಲೀನ ಪ್ರಕ್ರಿಯೆಗಳು ವಿವೇಚನಾರಹಿತವಾಗಿ ಅನೇಕ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆದರೆ, ಪ್ರತಿ ಪ್ರಕ್ರಿಯೆಯು ಮತ್ತೊಂದು ಪ್ರಕ್ರಿಯೆಗೆ ಅಗತ್ಯವಿರುವ ಸಂಪನ್ಮೂಲವನ್ನು ಹೊಂದಿರುವ ಪರಿಸ್ಥಿತಿಯು ಸಂಭವಿಸಬಹುದು. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಯಾವುದೇ ಪ್ರಕ್ರಿಯೆಗಳು ಅದಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಎಲ್ಲಾ ಪ್ರಕ್ರಿಯೆಗಳು ಮುಂದಿನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯಿಂದ ನಿರ್ಬಂಧಿಸಲ್ಪಡುತ್ತವೆ. ಈ ಪರಿಸ್ಥಿತಿಯನ್ನು ಡೆಡ್ಲಾಕ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಡೆಡ್ಲಾಕ್ ಪ್ರಿವೆನ್ಷನ್ ಅಲ್ಗಾರಿದಮ್ ಕನಿಷ್ಠ ಒಂದು ಪ್ರಕ್ರಿಯೆಯು ಯಾವಾಗಲೂ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಪ್ರತಿ ಪ್ರಕ್ರಿಯೆಯ ಮೂಲಕ ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಆಯೋಜಿಸುತ್ತದೆ. ಡೆಡ್ಲಾಕ್ ಅಲ್ಗಾರಿದಮ್ನ ಅಂತಹ ಒಂದು ಉದಾಹರಣೆಯೆಂದರೆ ಬ್ಯಾಂಕರ್ ಅಲ್ಗಾರಿದಮ್. ವಿತರಿಸಿದ ಡೆಡ್ಲಾಕ್ ವಿತರಿಸಿದ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ವಿತರಿಸಿದ ವಹಿವಾಟುಗಳು ಅಥವಾ ಏಕಕಾಲೀನ ನಿಯಂತ್ರಣವನ್ನು ಬಳಸುವಾಗ ವಿತರಿಸಿದ ಡೆಡ್ಲಾಕ್ಗಳು ಸಂಭವಿಸಬಹುದು. ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ಜಾಗತಿಕ ವೇಟ್-ಫಾರ್ ಗ್ರಾಫ್ ಅನ್ನು ನಿರ್ಮಿಸುವ ಮೂಲಕ, ಡೆಡ್ಲಾಕ್ ಡಿಟೆಕ್ಟರ್ನಲ್ಲಿ ಸ್ಥಳೀಯ ವೇಟ್-ಫಾರ್ ಗ್ರಾಫ್ಗಳಿಂದ ಅಥವಾ ಎಡ್ಜ್ ಚೇಸಿಂಗ್ನಂತಹ ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಅಲ್ಗಾರಿದಮ್ನಿಂದ ಪತ್ತೆಹಚ್ಚಬಹುದು. ಫ್ಯಾಂಟಮ್ ಡೆಡ್ಲಾಕ್ಗಳು ವ್ಯವಸ್ಥೆಯ ಆಂತರಿಕ ವಿಳಂಬಗಳಿಂದಾಗಿ ವಿತರಣಾ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಪತ್ತೆಯಾಗುವ ಡೆಡ್ಲಾಕ್ಗಳಾಗಿರುತ್ತವೆ ಆದರೆ ಪತ್ತೆ ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಅವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದಿಲ್ಲ. ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವಿಕೆ ಸಮಾನಾಂತರತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಹಲವು ವಿಭಿನ್ನ ಮಾರ್ಗಗಳಿವೆ, ಅಲ್ಲಿ ಪುನರಾವರ್ತಿತ ಲಾಕ್ಗಳು ಡೆಡ್ಲಾಕ್ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತವೆ. ಆದರೆ ಒಂದು ಬೆಲೆ ಇದೆ. ಮತ್ತು ಆ ಬೆಲೆಯು ಕಾರ್ಯಕ್ಷಮತೆ/ಓವರ್ಹೆಡ್ ಆಗಿರುತ್ತದೆ, ದತ್ತಾಂಶ ಭ್ರಷ್ಟಾಚಾರವನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಅಥವಾ ಎರಡೂ ಆಗಿರುತ್ತದೆ. ಕೆಲವು ಉದಾಹರಣೆಗಳಲ್ಲಿ ಇವು ಸೇರಿವೆಃ ಲಾಕ್ ಶ್ರೇಣಿ ವ್ಯವಸ್ಥೆಗಳು, ಲಾಕ್ ರೆಫರೆನ್ಸ್-ಎಣಿಕೆ ಮತ್ತು ಪ್ರಿಎಂಪ್ಷನ್ (ಪ್ರಿಎಂಪ್ಷನ್ ಸಂಭವಿಸಿದಾಗ ಆವೃತ್ತಿಯನ್ನು ಬಳಸುವುದು ಅಥವಾ ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರವನ್ನು ಅನುಮತಿಸುವುದು); ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ಉಂಟುಮಾಡುವ ಎಲ್ಲಾ ಚಕ್ರಗಳನ್ನು (ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ) ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ವೇಟ್-ಫಾರ್-ಗ್ರಾಫ್ (ಡಬ್ಲ್ಯುಎಫ್ಜಿ) ಕ್ರಮಾವಳಿಗಳು; ಮತ್ತು ಡೆಡ್ಲಾಕ್ಗಳು ಸಾಧ್ಯವಿರುವ ಸ್ಥಳಗಳ 100% ನಲ್ಲಿ ಸಮಾನಾಂತರತೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲದ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಕ್ರಮಾವಳಿಗಳು, ಬದಲಿಗೆ ಕಾರ್ಯಕ್ಷಮತೆ/ಓವರ್ಹೆಡ್ ವರ್ಸಸ್ ಸಮಾನಾಂತರತೆ ಸ್ವೀಕಾರಾರ್ಹವಾದ ಸಾಕಷ್ಟು ಸ್ಥಳಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಪರಿಹರಿಸುವ ಮೂಲಕ ರಾಜಿ ಮಾಡಿಕೊಳ್ಳುತ್ತವೆ. "ಕ್ರಾಸಿಂಗ್ನಲ್ಲಿ ಎರಡು ರೈಲುಗಳು ಪರಸ್ಪರ ಸಮೀಪಿಸಿದಾಗ" ಪರಿಸ್ಥಿತಿಯನ್ನು ಪರಿಗಣಿಸಿ. ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ತಡೆಗಟ್ಟುವಿಕೆಯು ಕ್ರಾಸಿಂಗ್ನಲ್ಲಿ (ಕ್ರಾಸಿಂಗ್ ಗಾರ್ಡ್) ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಸ್ವಿಚ್ನೊಂದಿಗೆ ನಿಂತಿರುವಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಅದು ಕೇವಲ ಒಂದು ರೈಲನ್ನು "ಸೂಪರ್ ಟ್ರ್ಯಾಕ್" ಗಳ ಮೇಲೆ ಅನುಮತಿಸುತ್ತದೆ, ಅದು ಇತರ ಕಾಯುವ ರೈಲು (ಗಳ) ಮೇಲೆ ಚಲಿಸುತ್ತದೆ. ಪುನರಾವರ್ತಿತವಲ್ಲದ ಲಾಕ್ಗಳಿಗೆ, ಲಾಕ್ ಅನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ನಮೂದಿಸಬಹುದು (ಅಲ್ಲಿ ಅನ್ಲಾಕ್ ಮಾಡದೆ ಎರಡು ಬಾರಿ ಪ್ರವೇಶಿಸುವ ಒಂದೇ ಥ್ರೆಡ್ ಡೆಡ್ಲಾಕ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಅಥವಾ ವೃತ್ತಾಕಾರದ ಕಾಯುವಿಕೆ ತಡೆಗಟ್ಟುವಿಕೆಯನ್ನು ಜಾರಿಗೊಳಿಸಲು ವಿನಾಯಿತಿಯನ್ನು ನೀಡುತ್ತದೆ). ಪುನರಾವರ್ತಿತ ಲಾಕ್ಗಳಿಗೆ, ಒಂದು ದಾರವನ್ನು ಮಾತ್ರ ಲಾಕ್ ಮೂಲಕ ಹಾದುಹೋಗಲು ಅನುಮತಿಸಲಾಗಿದೆ. ಬೇರೆ ಯಾವುದೇ ಎಳೆಗಳು ಬೀಗವನ್ನು ಪ್ರವೇಶಿಸಿದರೆ, ಅದರ ಮೂಲಕ ಹಾದುಹೋಗುವ ಆರಂಭಿಕ ಎಳೆ ಅದು ಎಷ್ಟು ಬಾರಿ ಪ್ರವೇಶಿಸಿದೆ ಎಂಬುದನ್ನು ಪೂರ್ಣಗೊಳಿಸುವವರೆಗೆ ಅವು ಕಾಯಬೇಕಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ಮೊದಲನೆಯದರೊಂದಿಗಿನ ಸಮಸ್ಯೆಯೆಂದರೆ ಅದು ಯಾವುದೇ ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವಿಕೆಯನ್ನು ಮಾಡುವುದಿಲ್ಲ. ಎರಡನೆಯದು ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಡೆಡ್ಲಾಕ್ ತಡೆಗಟ್ಟುವಿಕೆಯನ್ನು ಮಾಡುವುದಿಲ್ಲ. ಆದರೆ ಎರಡನೆಯದನ್ನು ಮೊದಲನೆಯದು ಪರಿಹರಿಸದ ಡೆಡ್ಲಾಕ್ ಸನ್ನಿವೇಶವನ್ನು ತಡೆಯಲು ಮರು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಪುನರಾವರ್ತಿತವಾಗಿ, ಒಂದು ದಾರವನ್ನು ಮಾತ್ರ ಲಾಕ್ ಮೂಲಕ ಹಾದುಹೋಗಲು ಅನುಮತಿಸಲಾಗುತ್ತದೆ. ಇತರ ಎಳೆಗಳು ಬೀಗವನ್ನು ಪ್ರವೇಶಿಸಿದರೆ, ಅದರ ಮೂಲಕ ಹಾದುಹೋಗುವ ಆರಂಭಿಕ ಎಳೆ n ಬಾರಿ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಅವು ಕಾಯಬೇಕಾಗುತ್ತದೆ. ಆದರೆ ಲಾಕಿಂಗ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಥ್ರೆಡ್ಗಳ ಸಂಖ್ಯೆಯು ಲಾಕ್ ಮಾಡಲಾದ ಸಂಖ್ಯೆಗೆ ಸಮನಾಗಿದ್ದರೆ, ಒಂದು ಥ್ರೆಡ್ ಅನ್ನು ಸೂಪರ್-ಥ್ರೆಡ್ ಎಂದು ನಿಯೋಜಿಸಿ ಮತ್ತು ಅದು ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಅದನ್ನು ಚಲಾಯಿಸಲು ಮಾತ್ರ ಅನುಮತಿಸಿ (ಅದು ಎಷ್ಟು ಬಾರಿ ಲಾಕಿಂಗ್ ಅನ್ನು ಪ್ರವೇಶಿಸುತ್ತದೆ/ನಿರ್ಗಮಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತದೆ). ಸೂಪರ್-ಥ್ರೆಡ್ ಮುಗಿದ ನಂತರ, ಸ್ಥಿತಿಯು ರಿಕರ್ಸಿವ್ ಲಾಕ್ನಿಂದ ತರ್ಕವನ್ನು ಬಳಸಲು ಬದಲಾಗುತ್ತದೆ, ಮತ್ತು ನಿರ್ಗಮಿಸುವ ಸೂಪರ್-ಥ್ರೆಡ್ ಸೂಪರ್-ಥ್ರೆಡ್ ಅಲ್ಲ ಎಂದು ಸ್ವತಃ ಹೊಂದಿಸುತ್ತದೆ, ಇತರ ಲಾಕ್ ಮಾಡಲಾದ, ಕಾಯುವ ಥ್ರೆಡ್ಗಳು ಈ ಸ್ಥಿತಿಯನ್ನು ಮರು-ಪರಿಶೀಲಿಸಬೇಕಾಗಿದೆ ಎಂದು ಲಾಕರ್ಗೆ ತಿಳಿಸುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, ನಿಯಮಿತವಾಗಿ ಲಾಕ್ ಮಾಡುವುದನ್ನು ಪುನರಾರಂಭಿಸಿ. ಮೇಲೆ ತಿಳಿಸದ ಸಮಸ್ಯೆಗಳು ಬಹಳಷ್ಟು ಗೊಂದಲಗಳು ನಿಲುಗಡೆ ಸಮಸ್ಯೆಯ ಸುತ್ತ ಸುತ್ತುತ್ತವೆ. ಆದರೆ ಈ ತರ್ಕವು ನಿಲುಗಡೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಲಾಕಿಂಗ್ ಸಂಭವಿಸುವ ಪರಿಸ್ಥಿತಿಗಳು ತಿಳಿದಿವೆ, ಇದು ನಿರ್ದಿಷ್ಟ ಪರಿಹಾರವನ್ನು ನೀಡುತ್ತದೆ (ಇಲ್ಲದಿದ್ದರೆ ಅಗತ್ಯವಿರುವ ಸಾಮಾನ್ಯ ಪರಿಹಾರದ ಬದಲಿಗೆ ನಿಲುಗಡೆ ಸಮಸ್ಯೆಯು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ). ಆದರೂ, ಈ ಲಾಕರ್ ಈ ತರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಲಾಕ್ಗಳನ್ನು ಪರಿಗಣಿಸಿ ಮಾತ್ರ ಎಲ್ಲಾ ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ. ಆದರೆ ಇದನ್ನು ಇತರ ಲಾಕಿಂಗ್ ಕಾರ್ಯವಿಧಾನಗಳೊಂದಿಗೆ ಬಳಸಿದರೆ, ಪ್ರಾರಂಭಿಸಲಾದ ಲಾಕ್ ಎಂದಿಗೂ ಅನ್ಲಾಕ್ ಆಗುವುದಿಲ್ಲ (ಅನ್ಲಾಕ್ ಮಾಡದೆಯೇ ಹೊರಗೆ ಜಿಗಿಯುವುದು, ಲಾಕ್ನೊಳಗೆ ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಲೂಪ್ ಮಾಡುವುದು, ಅಥವಾ ಅನ್ಲಾಕ್ ಮಾಡಲು ಕರೆ ಮಾಡಲು ಮರೆತು ಕೋಡಿಂಗ್ ದೋಷ), ಡೆಡ್ಲಾಕ್ ಆಗುವುದು ತುಂಬಾ ಸಾಧ್ಯ. ಇವುಗಳನ್ನು ಸೇರಿಸಲು ಸ್ಥಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಲು ನಿಲುಗಡೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಒಬ್ಬರು ಏನೂ ತಿಳಿದಿಲ್ಲದ ಮತ್ತು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗದ ಪರಿಸ್ಥಿತಿಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತಾರೆ. ಮತ್ತೊಂದು ಸಮಸ್ಯೆಯೆಂದರೆ, ಇದು ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವುದಿಲ್ಲ (ನಿಜವಾಗಿಯೂ ಡೆಡ್ಲಾಕ್ ಅಲ್ಲ, ಆದರೆ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಕಿಲ್ಲರ್), ಅಲ್ಲಿ ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಥ್ರೆಡ್ಗಳು ಪರಸ್ಪರ ಲಾಕ್ ಆಗುತ್ತವೆ ಮತ್ತು ಮತ್ತೊಂದು ಸಂಬಂಧವಿಲ್ಲದ ಥ್ರೆಡ್ ಚಾಲನೆಯಲ್ಲಿದೆ. ಈ ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ಗಳು ಅವುಗಳೊಳಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ಚಾಲನೆಯಲ್ಲಿರುವ ದಾರವನ್ನು ಹೊಂದಿರಬಹುದು, ಇದು ಸಮಾನಾಂತರತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಆದರೆ ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಡೆಡ್ಲಾಕ್ ಡಿಟೆಕ್ಷನ್ ಎಲ್ಲಾ ಲಾಕ್ಗಳಿಗೆ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದರಲ್ಲಿ ಉಪಗುಂಪುಗಳಲ್ಲದ ಕಾರಣ, ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ಸೂಪರ್-ಥ್ರೆಡ್ ತರ್ಕವನ್ನು ನಿರ್ವಹಿಸುವ ಮೊದಲು ಸಂಬಂಧವಿಲ್ಲದ ಚಾಲನೆಯಲ್ಲಿರುವ ಥ್ರೆಡ್ ಪೂರ್ಣಗೊಳ್ಳಬೇಕು. ಮೇಲಿನವುಗಳಲ್ಲಿ ತಾತ್ಕಾಲಿಕ ಲೈವ್-ಲಾಕ್ ಸನ್ನಿವೇಶವನ್ನು ನೋಡಬಹುದು. ಮೊದಲ ಸಂಬಂಧವಿಲ್ಲದ ದಾರವು ನಿರ್ಗಮಿಸುವ ಮೊದಲು ಮತ್ತೊಂದು ಸಂಬಂಧವಿಲ್ಲದ ಚಾಲನೆಯಲ್ಲಿರುವ ದಾರವು ಪ್ರಾರಂಭವಾದರೆ, ತಾತ್ಕಾಲಿಕ ಬಿಕ್ಕಟ್ಟಿನ ಮತ್ತೊಂದು ಅವಧಿ ಸಂಭವಿಸುತ್ತದೆ. ಇದು ನಿರಂತರವಾಗಿ ಸಂಭವಿಸಿದರೆ (ಅತ್ಯಂತ ಅಪರೂಪ), ಪ್ರೋಗ್ರಾಂ ನಿರ್ಗಮಿಸುವ ಮೊದಲು ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ ಅನ್ನು ವಿಸ್ತರಿಸಬಹುದು, ಇತರ ಸಂಬಂಧವಿಲ್ಲದ ಎಳೆಗಳು ಪೂರ್ಣಗೊಳ್ಳುವ ಭರವಸೆ ಇದೆ (ಏಕೆಂದರೆ ಒಂದು ಥ್ರೆಡ್ ಯಾವಾಗಲೂ ಪೂರ್ಣಗೊಳ್ಳುವ ಭರವಸೆ ಇದೆ). ತಾತ್ಕಾಲಿಕ ಅಡೆತಡೆಗಳು ಸಂಭವಿಸಬಹುದಾದ ಸಮಾನಾಂತರತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಹೆಚ್ಚುವರಿ ತರ್ಕವನ್ನು ಒಳಗೊಳ್ಳಲು ಇದನ್ನು ಮತ್ತಷ್ಟು ವಿಸ್ತರಿಸಬಹುದು. ಆದರೆ ಹೆಚ್ಚಿನ ತರ್ಕವನ್ನು ಸೇರಿಸುವ ಪ್ರತಿ ಹಂತಕ್ಕೂ, ನಾವು ಹೆಚ್ಚಿನ ಓವರ್ಹೆಡ್ ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ. ಒಂದೆರಡು ಉದಾಹರಣೆಗಳೆಂದರೆಃ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಲಾಕ್ಗಳ ಪ್ರತಿಯೊಂದು ಉಪವಿಭಾಗವನ್ನು ಪರಿಗಣಿಸಲು ವಿತರಿಸಿದ ಸೂಪರ್-ಥ್ರೆಡ್ ಲಾಕಿಂಗ್ ಕಾರ್ಯವಿಧಾನವನ್ನು ವಿಸ್ತರಿಸುವುದು; ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ಉಂಟುಮಾಡುವ ಎಲ್ಲಾ ಚಕ್ರಗಳನ್ನು (ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ) ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ವೇಟ್-ಫಾರ್-ಗ್ರಾಫ್ (ಡಬ್ಲ್ಯುಎಫ್ಜಿ) ಕ್ರಮಾವಳಿಗಳು; ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಡೆಡ್ಲಾಕ್ಗಳು ಸಾಧ್ಯವಿರುವ ಸ್ಥಳಗಳ 100% ನಲ್ಲಿ ಸಮಾನಾಂತರತೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲದ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಕ್ರಮಾವಳಿಗಳು, ಬದಲಿಗೆ ಕಾರ್ಯಕ್ಷಮತೆ/ಓವರ್ಹೆಡ್ ವರ್ಸಸ್ ಸಮಾನಾಂತರತೆ ಸ್ವೀಕಾರಾರ್ಹವಾದ ಸಾಕಷ್ಟು ಸ್ಥಳಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಪರಿಹರಿಸುವ ಮೂಲಕ ರಾಜಿ ಮಾಡಿಕೊಳ್ಳುತ್ತವೆ (ಉದಾಹರಣೆಗೆ. ಲಭ್ಯವಿರುವ ಪ್ರತಿ ಪ್ರೊಸೆಸರ್ಗೆ, ಪ್ರೊಸೆಸರ್ಗಳ ಸಂಖ್ಯೆ + 1 ಆಳಕ್ಕಿಂತ ಕಡಿಮೆ ಡೆಡ್ಲಾಕ್ ಸೈಕಲ್ಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವ ನಿಟ್ಟಿನಲ್ಲಿ ಕೆಲಸ ಮಾಡಿ). ಉಲ್ಲೇಖಗಳು ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಕಂಪ್ಯೂಟಿಂಗ್