Sự khác biệt giữa Mutex và Sự kiện Sự khác nhau giữa

Anonim

Mutex vs Event

Trong C #, có rất nhiều tùy chọn đồng bộ hóa luồng khác nhau. Hai cái được sử dụng rộng rãi hơn là mutex và sự kiện. Chỉ cần chính xác những gì là sự khác biệt giữa hai? Cái nào là một lựa chọn tốt hơn?

Tùy chọn sự kiện có thể cung cấp cho chủ đề tùy chọn để chặn cho đến khi một sự kiện được phát sóng do đó tên "sự kiện. "Nó cũng giống như đặt một cái gì đó để ngủ và chỉ thức dậy nó khi có ý nghĩa quan trọng xảy ra. Sự kiện không giống như mutexes vì ​​mutexes không có tùy chọn báo hiệu hoặc chức năng. Các sự kiện có thể xóa tín hiệu khi ai đó có thể chờ đợi nó đã được đánh thức. Ngay cả API cũng có thể cho phép tùy chọn chặn đến khi một hoặc tất cả các sự kiện khác được báo hiệu. Ngoài ra, các sự kiện là các đối tượng hạt nhân. Chúng không "nhẹ hơn" so với mutexes. Một sự kiện cơ bản là một đối tượng hạt nhân có hai trạng thái. Thông thường, một sự kiện báo hiệu sự xuất hiện của một sự kiện và đôi khi thậm chí là kết thúc của một hoạt động I / O.

"Mutex" là viết tắt của Mutual Exclusion. Đây là một hình thức phối hợp cơ chế phối hợp cho các nguồn lực được chia sẻ. Hãy nghĩ về nó như là một hình thức giao dịch. Bạn không bắt buộc phải đợi mặc dù bạn muốn truy cập vào một vài tài nguyên được chia sẻ (chỉ trong trường hợp những người khác đang truy cập vào nó) bạn đang chặn. Một mutex bao gồm hai tiểu bang mặc dù nó tồn tại để đưa vào thực hiện một loại trừ lẫn nhau. Đây là khi bạn muốn bảo vệ một đoạn code thường cập nhật một tài nguyên được chia sẻ từ phần mà trong đó mutex được yêu cầu là phần mà nó sẽ được phát hành. Điều này dẫn đến thực tế là không có sợi nào khác có thể đi qua phần.

Những người đã cố gắng để mô phỏng một sự kiện với sự giúp đỡ của một mutex đã phải gặp phải vấn đề trong đó ngay khi khóa được mua lại hoặc sự kiện đã được báo hiệu, người đó đang giữ mọi người khác lên trên cho đến khi khóa được giải phóng. Đây không phải là ngữ nghĩa của một sự kiện được báo hiệu. Một sự kiện có thể vẫn được đăng và một hình thức của cổng sẽ có sẵn cho tất cả các kiểm tra chủ đề trong trường hợp không có bất kỳ ổ khóa. Mutex cam kết quá trình đồng bộ hóa là trong đối tượng chế độ hạt nhân. Sự kiện được thực hiện cho đồng bộ hóa đa luồng theo một phương pháp là trong đối tượng chế độ người dùng.

Đối tượng Mutex quá nặng và quá chung chung. Các đối tượng sự kiện rất nhẹ. Đồng bộ hóa chế độ người dùng được sử dụng trong hầu hết các tình huống vì lý do nó cho phép chu kỳ CPU ít hơn. Mutex rất giống với một phần quan trọng và được sử dụng để đồng bộ hóa truy cập vào các tài nguyên được chia sẻ. Sự kiện có một chức năng hoàn toàn khác nhau bởi vì chúng được sử dụng để đồng bộ hóa các nhiệm vụ hoặc để quản lý lập kế hoạch công việc cho một số người.

Sự kiện là nhiều hơn một biến điều kiện, không giống như Mutex, giống như một màn hình

trong một số thuật ngữ, hoặc nó có thể là một dạng truyền thống của semaphore / mutex.

Tóm tắt:

1. Tùy chọn sự kiện có thể cung cấp cho chủ đề tùy chọn để chặn cho đến khi sự kiện được phát sóng, do đó tên "sự kiện. "

2. Một sự kiện cơ bản là một đối tượng hạt nhân có hai trạng thái. Thông thường, một sự kiện báo hiệu sự xuất hiện của một sự kiện và đôi khi thậm chí là kết thúc của một hoạt động I / O.

3. "Mutex" là viết tắt của Mutual Exclusion. Đây là một hình thức phối hợp cơ chế phối hợp cho các nguồn lực được chia sẻ.

4. Mutex cam kết quá trình đồng bộ hóa là trong đối tượng chế độ hạt nhân. Sự kiện được thực hiện cho đồng bộ hóa đa luồng theo một phương pháp là trong đối tượng chế độ người dùng.

5. Sự kiện là nhiều hơn một biến điều kiện, không giống như Mutex, giống như một màn hình

trong một số thuật ngữ, hoặc nó có thể là một dạng truyền thống của semaphore / mutex.