Tôi có một máy chủ trò chơi hơn là có thể nhận được yêu cầu từ người dùng. Một người dùng có thể yêu cầu để đặt miếng. Phương pháp địa điểm sau đó sinh ra một số httpwebrequests không đồng bộ (với hết thời gian chờ) để tìm hiểu xem vị trí đó có chính xác hay không. Tôi muốn một khóa sẽ bị khóa khi máy chủ nhận được yêu cầu vị trí và sẽ được mở khóa bằng cuộc gọi lại trên web. Tôi sẽ sử dụng một ReaderWriterLock, nhưng điều đó chỉ hoạt động nếu tôi ở lại trong cùng một chủ đề, và các yêu cầu gọi lại web xảy ra trên các chủ đề khác nhau. Có khóa nào khác tôi nên sử dụng không?Khóa trong một sợi, nhả ra một số khác
6
A
Trả lời
9
Bạn có thể sử dụng a semaphore. Các chủ đề khóa mua lại một giấy phép. Chuỗi async phát hành giấy phép. Semaphores là tiện lợi bởi vì chúng không bị ràng buộc với các chủ đề riêng lẻ.
4
Bạn có thể sử dụng Semaphore. Trích dẫn từ sổ tay;
Lớp Semaphore không thực thi nhận dạng chuỗi trên cuộc gọi đến WaitOne hoặc Release.
Nói cách khác, bạn sẽ không gặp sự cố khi mua/phát hành từ hai chủ đề khác nhau.
Các vấn đề liên quan
- 1. Tạo ra một sợi chỉ trong python
- 2. Trong Java nếu một sợi bị giết, điều gì sẽ xảy ra với luồng khác?
- 3. Threading Python. Làm thế nào để khóa một sợi?
- 4. Ngủ một sợi chỉ tăng cho một số nano giây
- 5. Khóa mutex trong một chủ đề và mở khóa nó trong một số khác
- 6. Lấy WPF phối ngay trong một sợi
- 7. nhập khẩu bên trong của một sợi Python
- 8. Thoát khỏi một sợi
- 9. Gọi một hàm trong một sợi nền/quá trình (forking)
- 10. Dừng một sợi bên trong một dịch vụ
- 11. Xác định nguồn của một sợi
- 12. Tôi có thể sinh ra một sợi chỉ từ một servlet không?
- 13. Tại sao PBE tạo ra cùng một khóa với số lượng muối và số lần lặp lại khác nhau?
- 14. Làm thế nào để kiểm tra xem một sợi đang giữ khóa trên một đối tượng trong C#?
- 15. Cách được thông báo khi một sợi đã bị chấm dứt vì một số lỗi
- 16. MD5 Hashing Đưa ra một khóa trong C#
- 17. không thể gọi một sợi trong tập tin dll
- 18. Làm thế nào để giết một sợi trong delphi?
- 19. Process sinh ra thông qua Process.Start trong .NET treo sợi
- 20. F # từ khóa 'Một số'
- 21. C#: Dừng một sợi sau khi một ngoại lệ
- 22. Maven pom.xml, SCM và nhả
- 23. Một hình thức Django khác: Khóa ngoại trong trường ẩn
- 24. Đếm số từ khóa trong một từ điển trong python
- 25. Khi nào thì một sợi chỉ nên mang lại?
- 26. AutoResetEvent so với boolean để dừng một sợi
- 27. Tạo một số ngẫu nhiên từ một số khác
- 28. Làm thế nào để chấm dứt một sợi công nhân một cách chính xác trong C#
- 29. Ổ cắm có thể được đóng từ một sợi khác khi gửi/recv trên cùng một ổ cắm không?
- 30. Làm thế nào để chấm dứt một sợi trong một phạm vi xem phạm vi đậu?
Cảm ơn, điều đó đã hiệu quả. – Nikhil