Có một tập hợp các tiêu chuẩn gần đúng để chú thích an toàn luồng, tính bất biến, v.v.?


8

Ngoại trừ một bài đăng blog ở đây và ở đó, mô tả các thuộc tính tùy chỉnh mà ai đó đã tạo, nhưng dường như không có bất kỳ lực kéo nào - giống như mô tả cách thực thi tính bất biến , một thuộc tính khác về Tài liệu chủ đề an toàn , mô hình hóa các thuộc tính sau chú thích JCIP - có tiêu chuẩn nào mới nổi? Bất cứ điều gì MS có thể được lên kế hoạch cho tương lai?

Đây là điều cần phải chuẩn, nếu có bất kỳ cơ hội tương tác nào giữa các thư viện đồng thời khôn ngoan. Cả hai cho mục đích tài liệu, và cũng để cung cấp các công cụ kiểm tra tĩnh / động.

Nếu MS không làm bất cứ điều gì theo hướng đó, nó có thể được thực hiện trên CodePlex - nhưng tôi cũng không thể tìm thấy bất cứ điều gì ở đó.

<Ý kiến> Đồng thời và an toàn luồng thực sự khó khăn trong các ngôn ngữ bắt buộc và ngôn ngữ đối tượng như C # và Java, chúng ta nên cố gắng chế ngự nó, cho đến khi chúng ta hy vọng chuyển sang ngôn ngữ phù hợp hơn. </ Ý kiến>


1
Bình chọn để chuyển đến các lập trình viên về cách mở kết thúc này

Câu trả lời:


3

Vấn đề với cả tính bất biến và an toàn của luồng là chúng không phải là khái niệm đen trắng, nhưng có một số đảm bảo có thể có trong vấn đề đó. Giảm điều đó đến các thuộc tính đơn giản có thể khó khăn. IMO một thuộc tính đơn giản ThreadSafeImmutablekhông đủ. Vẫn đang tìm ra một tập hợp các thuộc tính nắm bắt ít nhất các âm thanh ngữ nghĩa quan trọng nhất hứa hẹn với tôi.

Ví dụ lấy một AddRangephương thức. Nó có thể là luồng đủ an toàn để không bao giờ làm hỏng trạng thái của bộ sưu tập cơ bản, nhưng có thể không phải là nguyên tử. Một triển khai chung với các tính chất này có thể chỉ là gọi một Addphương thức nguyên tử cho mỗi phần tử.

Về mặt bất biến chúng ta cũng có những khía cạnh khác nhau:

  • Cung cấp chỉ truy cập chỉ đọc hoặc thực sự không bao giờ thay đổi
  • Độ sâu của tính bất biến tức là các đối tượng phụ bất biến quá
  • Bất biến vật lý và logic. Ví dụ, khởi tạo lười biếng không thay đổi trạng thái hiển thị, nhưng thay đổi trạng thái bên trong.

Một chú thích là bối cảnh này đã tồn tại: Puređối với các phương thức miễn phí có tác dụng phụ.


Tôi đồng ý rằng nó không đơn giản. Nhưng tôi nghĩ nó nên được thực hiện. Thật khó để làm phần mềm phức tạp mà không có phần mềm, đặc biệt là tích hợp nhiều thư viện. Cảm ơn bạn đã chỉ ra Pure ( msdn.microsoft.com/en-us/l Library / trộm ), đó là một sự khởi đầu và do đó tôi sẽ chấp nhận câu trả lời của bạn, vì nó dường như là cách tốt nhất chúng ta có thể nhận được ngay bây giờ, về mặt "Tiêu chuẩn gần đúng" của ít nhất MỘT SỐ.

0

Tôi không nghĩ rằng có một bộ tiêu chuẩn (thậm chí gần như) ngay bây giờ. Các dự án biệt lập làm một số điều này theo cách riêng của họ. Tôi có một bài viết chủ đề họ nói về sự bất biến thông qua các hợp đồng mã và thậm chí nướng trực tiếp vào hệ thống loại. Tôi đã thấy thậm chí ít hơn về an toàn chủ đề.


Nếu mỗi dự án thực hiện hệ thống riêng của họ, thật khó để tích hợp các thư viện khác nhau và xây dựng hoặc sử dụng các công cụ phân tích tĩnh / động để xác minh mọi thứ.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.