Chúng tôi có một tình huống mà chúng tôi muốn giới hạn số lượng yêu cầu paralell mà ứng dụng của chúng tôi có thể thực hiện cho máy chủ ứng dụng của nó. Chúng ta có khả năng chạy 100 thread nền mà sẽ muốn tại một số điểm thực hiện cuộc gọi đến máy chủ ứng dụng nhưng chỉ muốn 5 luồng để có thể gọi SendMessage() (hoặc bất kỳ phương thức nào sẽ) tại bất kỳ thời điểm nào. Cách tốt nhất để đạt được điều này là gì?Giới hạn số lượng chủ đề thực hiện một phương thức tại một thời điểm
Tôi đã xem xét sử dụng một số loại đối tượng gatekeeper để chặn các chuỗi đi vào phương thức cho đến khi số lượng chuỗi thực hiện trong đó đã giảm xuống dưới ngưỡng. Đây có phải là một giải pháp hợp lý hay tôi nhìn ra thực tế rằng điều này có thể là bẩn/nguy hiểm?
Chúng tôi đang phát triển trong C# .NET 3.5.
Cảm ơn,
Steve
bạn có thể muốn phát hành semaphore ngay cả khi ngoại lệ * không được * ném. Đặt nó trong khối cuối cùng –
oops, xấu của tôi, nhờ – LorenVS
Thuộc tính đồng bộ hóa phương pháp cấp là xấu. Nó khóa trên "điều này" cho các thành viên ví dụ và thậm chí tệ hơn, loại cho các thành viên tĩnh. Nó không bao giờ nên được sử dụng. – Josh