Ai đó có thể cung cấp định nghĩa và trường hợp sử dụng giáo dân?Thuật ngữ "chặn" có nghĩa là gì trong lập trình?
Trả lời
"Chặn" có nghĩa là người gọi đợi cho đến khi callee kết thúc quá trình xử lý. Ví dụ, một "chặn đọc" từ một ổ cắm chờ đợi cho đến khi có dữ liệu để trở về; một "không chặn" đọc không, nó chỉ trả về một dấu hiệu (thường là một số) cho dù có cái gì đó đọc.
Bạn nghe cụm từ chủ yếu xung quanh các API truy cập tài nguyên không nhất thiết yêu cầu sự chú ý của CPU - ví dụ: I/O. Một cuộc gọi từ Chủ đề A đến Chủ đề B có thể được thiết kế để "chặn" (giữ chủ đề A) cho đến khi Chủ đề B đạt được trạng thái có liên quan để xử lý hoặc ít nhất chấp nhận yêu cầu. (Ví dụ rõ ràng nhất có "tham gia", thường có nghĩa là "Tôi, Chủ đề A, muốn đợi cho đến khi Chủ đề B chấm dứt" - bạn sử dụng điều đó khi thoát khỏi chương trình đa luồng.)
Nói cách đơn giản : Nếu bạn gọi chức năng dừng chương trình tiếp tục chạy cho đến khi người dùng thực hiện một số hành động (hoặc một số hành động khác mà chương trình của bạn không kiểm soát), cuộc gọi này được gọi là cuộc gọi chặn.
điều này khác với đồng bộ/không đồng bộ như thế nào? – alfredo
- 1. Thuật ngữ "BODMAS" có nghĩa là gì?
- 2. Thuật ngữ lập trình
- 3. Thuật ngữ "lexical" có nghĩa là gì trong C++?
- 4. "bù" nghĩa là gì trong ngữ cảnh lập trình?
- 5. "Gói" có nghĩa là gì trong lập trình?
- 6. Thuật ngữ "Tổng hợp Verilog" có nghĩa là gì?
- 7. Thuật ngữ "thuật ngữ vector" là gì?
- 8. "Vùng chứa" có nghĩa là gì trong ngữ cảnh lập trình?
- 9. Thuật ngữ "mệnh đề" trong ngữ cảnh lập trình
- 10. Điều gì có nghĩa là tốt trong ngôn ngữ lập trình?
- 11. Điều đó thực sự có nghĩa là ngôn ngữ lập trình là gì?
- 12. Thành ngữ lập trình là gì?
- 13. Điều này có nghĩa là gì trong lập trình iphone?
- 14. Sự khác nhau giữa cú pháp và ngữ nghĩa của ngôn ngữ lập trình là gì?
- 15. Trong thuật ngữ laymans, 'tĩnh' có nghĩa là gì trong Java?
- 16. EOF trong ngôn ngữ lập trình C là gì?
- 17. "Từ ... nhập ..." có nghĩa là gì trong các thuật ngữ đầu xương đơn giản?
- 18. Đồ đạc trong lập trình là gì?
- 19. Ý nghĩa của khái niệm serialization trong ngôn ngữ lập trình là gì?
- 20. Yêu cầu Crosscutting/Mối quan tâm có nghĩa là gì trong Lập trình?
- 21. 'Ngôn ngữ xây dựng' có nghĩa là gì?
- 22. Thuật ngữ Plain Old Java Object (POJO) có nghĩa là gì?
- 23. Thuật ngữ "vendoring" hoặc "to vendor" có nghĩa là gì đối với Ruby on Rails?
- 24. Thuật ngữ cơ sở dữ liệu cũ có nghĩa là gì?
- 25. Lập trình meta là gì?
- 26. Ngữ cảnh lối ra có nghĩa là gì đối với WaitHandle.WaitOne nghĩa là gì?
- 27. Ý nghĩa của "1ULL" trong ngôn ngữ lập trình c
- 28. Thuật ngữ lập trình - trường, thành viên, thuộc tính (C#)
- 29. Khóa Mutex: "chặn" nghĩa là gì?
- 30. "Ngữ nghĩa chính thức" là gì?
điều này khác với đồng bộ/không đồng bộ như thế nào? – alfredo
@Jackie: Không * rất nhiều * nhưng có sự khác biệt. Thông thường, bạn sẽ thấy cụm từ "chặn" xung quanh cuộc gọi sẽ trả về dữ liệu (hoặc bạn có) như một phần của cuộc gọi đó (ví dụ đọc socket của tôi; nó chờ [chặn] hoặc không [không chặn] nhưng bạn nhận được dữ liệu - hoặc không - như một hiệu ứng tức thời của cuộc gọi), trong khi bạn nghe "không đồng bộ" xung quanh một mô hình yêu cầu-sau-kiểm tra lại (hoặc nhận được gọi lại). Nhưng chúng là những khái niệm liên quan chặt chẽ. Tôi đoán bạn nghe "chặn" xung quanh những thứ được * đã * không đồng bộ theo một cách nào đó (mạng comms, ví dụ lặp lại của tôi) nhiều hơn không. –
Nó có vẻ như không chặn là cho truyền thông không đồng bộ và chặn là truyền thông đồng bộ, nhưng điều đó không hoàn toàn đúng. Mã đồng bộ có thể sử dụng các cuộc gọi không chặn (ví dụ như trong vòng lặp, mặc dù nó không thực tế) và mã không đồng bộ thường sử dụng các cuộc gọi chặn (đầu tiên lấy thông tin nếu và kết nối nào cần chú ý, sau đó gọi chức năng 'chặn', đã biết nó sẽ không chặn). –