Một số nguyên tắc đồng bộ hóa. Nguồn cung cấp Net là trình bao bọc được quản lý xung quanh các đối tượng gốc bên dưới.
Hiện tại, không có nguyên gốc đồng bộ hóa gốc nào triển khai khóa không đồng bộ. Vì vậy, những người thực hiện .Net phải thực hiện điều đó từ đầu, điều này không đơn giản như vậy.
Ngoài ra, nhân Windows không cung cấp bất kỳ tính năng nào của "khóa ủy nhiệm", nghĩa là bạn không thể khóa khóa trong một chuỗi và chuyển quyền sở hữu cho một chuỗi khác. khó khăn. Theo quan điểm của tôi, lý do thứ ba là triết lý thứ ba hơn - nếu bạn không muốn chặn - sử dụng các kỹ thuật không chặn, như sử dụng IO không đồng bộ, khóa các thuật toán và cấu trúc dữ liệu miễn phí. Nếu nút cổ chai của ứng dụng của bạn là ganh đua nặng nề và chi phí khóa xung quanh nó, bạn có thể thiết kế lại ứng dụng của bạn ở dạng khác mà không cần phải có khóa không đồng bộ.
Nguồn
2016-03-15 18:47:04
Tôi biết câu hỏi này về màn hình, nhưng có một số nguyên tắc đồng bộ hóa cung cấp hoạt động không đồng bộ: https://msdn.microsoft.com/en-us/library/hh462723.aspx –
Hoàn toàn có thể! Thật khó để viết (và khó sử dụng hơn), và nó không được trang bị thêm vào lớp 'Monitor' hiện tại vì' Monitor' là một kiểu khá cơ bản để bắt đầu, và đây là một trường hợp khá phức tạp (giả sử bạn thực sự, thực sự cần nó). Xem https://github.com/StephenCleary/AsyncEx/wiki/AsyncMonitor để thực hiện. –
Có thể thực hiện nhưng mọi thứ xảy ra sai khi bạn thử và thực sự sử dụng nó. http://stackoverflow.com/questions/7612602/why-cant-i-use-the-await-operator-within-the-body-of-a-lock-statement – vcsjones