2009-04-01 33 views

Trả lời

17

Sổ đăng ký sẽ đảm bảo các hành động là nguyên tử, do đó bạn không phải tự đồng bộ hóa nó.

Tuy nhiên, nếu bạn có nhiều quy trình/chủ đề truy cập sổ đăng ký cùng một lúc, nó không đảm bảo bất kỳ điều gì xảy ra trước tiên. Chỉ rằng bạn sẽ không nhận được dữ liệu bị cắt xén.

Chỉnh sửa: Đọc thêm, xem The inability to lock someone out of the registry is a feature, not a bug.

0

Điều đó tùy thuộc vào nội dung bạn đang giao tiếp và thời gian thông tin quan trọng. Ví dụ: giả sử bạn có ứng dụng hoạt động và ghi kết quả trạng thái vào khóa đăng ký và ứng dụng khác đọc trạng thái đó và hiển thị nó trên màn hình. Trong trường hợp đó, tôi sẽ không bận tâm với một mutex, vì người đọc sẽ luôn nhận được một giá trị "có ý nghĩa". Những gì bạn đang hỏi thực sự là một câu hỏi cơ bản về thiết kế đồng thời, tôi nghĩ vậy.

1

Đọc nhanh bài viết này của Raymond Chen. Nó giải thích rằng cá nhân viết và đọc chống lại đăng ký là nguyên tử. Tuy nhiên, khóa khác là tùy thuộc vào bạn vì bây giờ có cách để giữ một khóa mở độc quyền.

http://blogs.msdn.com/oldnewthing/archive/2009/03/26/9508968.aspx

2

Windows Server 2008 cũng đã hỗ trợ cho việc truy cập giao dịch để đăng ký. Here's the overview tại MSDN. Và đây là một số blog post thông báo với một số câu hỏi và câu trả lời.

4

Như những người khác đã đề cập, các hoạt động riêng lẻ là nguyên tử. Nếu bạn cần tạo một tập hợp lớn hơn các hoạt động nguyên tử và bạn đang nhắm mục tiêu đến Vista hoặc tốt hơn, bạn có thể sử dụng hỗ trợ đăng ký giao dịch được thêm vào trong Vista.

Thật không may, không có hỗ trợ được quản lý trực tiếp nên bạn cần tạo trình bao bọc. http://community.bartdesmet.net/blogs/bart/archive/2006/12/14/Windows-Vista-2D00-Introducing-TxR-in-C_2300_-_2800_Part-1_2900_.aspx cho biết cách P/Gọi các phương thức này.

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