2011-11-05 27 views
5

Tôi đã sử dụng chứng mất trí trong một thời gian. Tôi phải thú nhận rằng tôi cảm thấy như tôi không hiểu chính xác khái niệm của mnesia:wait_for_tables/2. Trích dẫn tài liệu dưới đây cho biết điều này: mnesia: wait_for_tables/2, tôi có thực sự hiểu nó không?

 
Some applications need to wait for certain tables to be accessible in order to do
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
Bây giờ, đối với tất cả các ứng dụng tôi đã phát triển, tôi đã phải gọi điều này khi bắt đầu chương trình phụ trợ của tôi. Trong tài liệu ở trên, ngữ cảnh của "Some applications" không được mở rộng tốt và đó là câu hỏi của tôi.

Đây là những suy nghĩ của tôi:
1. Chờ trong phương pháp này có nghĩa là chúng ta đang tải bảng mnesia từ nói Disc để RAM (trường hợp Disc_copies)
2. Cá nhân tôi nghĩ rằng nếu ứng dụng của tôi chỉ bao gồm các bảng RAM (ram_copies), sau đó tôi không cần phương thức này trong mã của mình. Bây giờ, tôi đúng khi nghĩ rằng nếu tôi chỉ có disc_only_copies, tôi cũng không cần chức năng này. Ngoài ra, tôi cần chức năng này khi tải bảng mnesia từ mạng, đặc biệt là khi các bảng của tôi được nhân rộng, vì vậy các ứng dụng của tôi cần phải chờ đợi để bắt đầu chuẩn bị sẵn sàng để làm cho các bảng này sẵn sàng. Nhưng điều này vẫn chỉ áp dụng cho các bảng loại disc_copies là lý do tại sao một ứng dụng chạy hoàn toàn trên Đĩa hoặc hoàn toàn trong RAM cần phải chờ và tải bảng?

câu hỏi:
Trợ giúp và kiểm tra suy nghĩ của tôi 1, 2 và 3. Nói chung là chức năng này chỉ cần thiết khi giao dịch với loại bảng mnesia: disc_copies kể từ khi loại hình này có cái gì để làm với dữ liệu sao chép vào đĩa và RAM?

Nếu bảng của tôi bị phân mảnh, (tôi luôn gọi phương thức này cho từng đoạn để đảm bảo chứng mất trí đã sẵn sàng cho ứng dụng của tôi), tôi có phải gọi phương thức trên mỗi đoạn không? là phương thức ATOMIC hoặc Transactional nếu tôi gọi nó trong một giao dịch mất trí nhớ (nghĩa là chứng mất trí sẽ tự động tải tất cả các mảng bảng nếu tôi chỉ định bảng cơ sở một mình)? loại bảng của các mảnh của tôi cũng có liên quan đến chức năng này không?

Trả lời

3

Khi bắt đầu chứng mất trí, mnesia chỉ xếp hàng tất cả các bảng sẽ được tải từ đĩa hoặc từ mạng.

mất trí nhớ: wait_for_tables/2 cung cấp cho bạn điểm đồng bộ hóa để bạn không phải thăm dò ý kiến ​​nếu (các) bảng đã sẵn sàng để sử dụng.

Nếu bạn không sử dụng đĩa và không sao chép, (tức là lược đồ luôn trống trong khi bắt đầu) bạn không cần sử dụng wait_for_tables.

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