Đây có phải là quá mức cần thiết và chỉ một trong những điều này cần thiết không? Tôi đã tìm kiếm và tìm thấy các bài đăng khác nhau về Loại trừ lẫn nhau và khóa trong C# here và here.
Ví dụ:
Trong ứng dụng của chúng tôi, chúng tôi có chức năng xoay nhiều chuỗi kết nối lại và bên trong chuỗi này, chúng tôi sử dụng Mutex
và lock
. Sẽ không lock
chặn truy cập vào phần mã này và ngăn không cho connect
cập nhật bởi bất kỳ chủ đề nào khác không?Nên Khóa và Mutexes trong C# được sử dụng cùng nhau
bool connect = false;
Mutex reconnectMutex = new Mutex(false, "Reconnect_" + key);
try
{
lock(site)
{
if(site.ContainsKey(key))
{
siteInfo = (SiteInfo)site[key];
if(reconnectMutex.WaitOne(100, true))
{
connect = true;
}
}
}
if (connect)
{
// Process thread logic
}
}
catch
{}
reconnectMutex.ReleaseMutex();
Thông tin thêm:
Đây là một ASP.NET WebService không chạy trong Web Garden.
phải được đặt tên phù hợp để cụ thể cho máy. –
Điểm tốt, tôi hy vọng làm rõ rằng trong câu đầu tiên. –
Bạn đang nói tôi nên loại bỏ câu lệnh khai thác và thay thế nó bằng một cái cuối cùng? –