2012-05-04 40 views
5

Tôi đã đọc về mutex, semaphores và các phần quan trọng. Tôi hiểu rằng mutex đồng bộ hóa một tài nguyên để chỉ có một luồng truy cập vào nó tại một thời điểm mà semaphore cho phép một luồng không có chủ đề cụ thể truy cập vào một tài nguyên nhưng những phần quan trọng nào làm?Các phần quan trọng trong chủ đề

+0

Bạn đang nói về Windows hay nói chung? –

+7

Đọc này - http://en.wikipedia.org/wiki/Critical_section, và sau đó trở lại với một câu hỏi cụ thể hơn nếu nó vẫn không có ý nghĩa. –

+0

Dường như với tôi khi đọc bài viết wikipedia rằng các semaphores và các phần quan trọng đều giống nhau? – Rajeshwar

Trả lời

13

Trong sử dụng bình thường, một phần quan trọng là một phần của mã phải được thực thi serially - tức là chỉ có một luồng có thể thực thi mã đó tại bất kỳ thời điểm nào. Bạn thường thực hiện điều đó bằng cách bảo vệ mã bằng một semaphore mutex.

Trong ngôn ngữ Windows, phần quan trọng là cấu trúc dữ liệu (và một vài hàm liên quan) triển khai tại semaphore mutex theo quy trình cụ thể (ví dụ, chỉ được sử dụng để khóa giữa các luồng trong một quy trình duy nhất, chứ không phải giữa các quy trình riêng biệt).

Có hai loại semaphores. Một semaphore mutex cho phép chỉ có một thread thực hiện tại một thời điểm. Một semaphore tính cho phép bạn xác định số lượng tối đa của các chủ đề có thể thực hiện cùng một lúc. Các semaphores mutex là giống phổ biến hơn, nhưng tính semaphores chắc chắn có sử dụng là tốt.

+0

Cảm ơn ý nghĩa – Rajeshwar

+0

Là một "semaphore mutex" giống như một "semaphore nhị phân" (có một [SO câu hỏi liên quan] có liên quan (http://stackoverflow.com/questions/62814/difference-between-binary-semaphore -and-mutex))? Thuật ngữ đôi lúc có thể gây nhầm lẫn. –

+0

Không, cả hai không giống nhau. Một mutex bị khóa chỉ có thể được mở khóa bởi bất cứ ai đã khóa nó trước đó. Một semaphore nhị phân bị khóa có thể được mở khóa bởi bất cứ ai. –

Các vấn đề liên quan