Apakah ada seperangkat atribut kuasi-standar untuk menjelaskan keselamatan benang, kekekalan, dll.?


8

Kecuali untuk posting blog di sana-sini, menggambarkan atribut khusus yang dibuat seseorang, tetapi itu tampaknya tidak mendapatkan daya tarik - seperti yang menggambarkan bagaimana menegakkan keabadian , yang lain tentang Mendokumentasikan Keamanan Thread , memodelkan atribut setelah anotasi JCIP - ada di sana Adakah standar yang muncul? Adakah yang MS rencanakan untuk masa depan?

Ini adalah sesuatu yang harus menjadi standar, jika ada kemungkinan interoperabilitas antara perpustakaan secara bersamaan. Baik untuk keperluan dokumentasi, dan juga untuk memberi makan alat uji statis / dinamis.

Jika MS tidak melakukan apa pun ke arah itu, itu bisa dilakukan pada CodePlex - tapi saya juga tidak bisa menemukan apa pun di sana.

<opinion> Keamanan konkurensi dan utas sangat sulit dalam bahasa imperatif dan objek-objek seperti C # dan Java, kita harus mencoba menjinakkannya, hingga mudah-mudahan kita beralih ke bahasa yang lebih tepat. </opinion>


1
Pilih untuk pindah ke pemrogram untuk seberapa terbuka ini berakhir

Jawaban:


3

Masalah dengan immutabilitas dan keselamatan benang adalah bahwa mereka bukan konsep hitam dan putih, tetapi ada sejumlah jaminan yang mungkin dalam hal itu. Mengurangi itu ke atribut sederhana mungkin sulit. IMO atribut yang sederhana ThreadSafedan Immutabletidak cukup. Masih bekerja di luar seperangkat atribut menangkap setidaknya semantik paling penting terdengar menjanjikan bagi saya.

Misalnya ambil suatu AddRangemetode. Ini mungkin thread yang cukup aman untuk tidak pernah merusak keadaan koleksi yang mendasarinya, tetapi mungkin bukan atom. Implementasi umum dengan properti ini mungkin hanya memanggil Addmetode atom untuk setiap elemen.

Di sisi imutabilitas, kami juga memiliki aspek yang berbeda:

  • Menawarkan pengakses hanya baca atau benar-benar tidak pernah berubah
  • Kedalaman kekekalan yaitu sub-objek juga berubah
  • Ketidakberdayaan fisik vs. logis. Misalnya inisialisasi malas tidak mengubah keadaan yang terlihat, tetapi mengubah keadaan internal.

Satu penjelasan adalah konteks ini sudah ada: Pureuntuk metode bebas efek samping.


Saya setuju bahwa itu tidak sederhana. Tapi saya pikir itu harus dilakukan. Terlalu sulit untuk melakukan perangkat lunak yang rumit tanpanya, terutama mengintegrasikan banyak pustaka. Terima kasih telah menunjukkan Murni ( msdn.microsoft.com/en-us/library/... ), itu awal dan saya akan menerima jawaban Anda, karena tampaknya itu yang terbaik yang bisa kami dapatkan sekarang, dalam hal suatu 'kuasi-standar' setidaknya SESUATU.

0

Saya tidak berpikir ada seperangkat standar (bahkan kuasi) sekarang. Proyek-proyek yang terisolasi melakukan beberapa hal dengan cara mereka sendiri. Saya posting thread mereka berbicara tentang imutabilitas melalui kontrak kode dan bahkan memanggang langsung ke sistem tipe. Saya telah melihat lebih sedikit tentang keamanan benang.


Jika setiap proyek mengimplementasikan sistem mereka sendiri, sulit untuk mengintegrasikan perpustakaan yang berbeda dan membangun atau menggunakan alat analisis statis / dinamis untuk memverifikasi hal-hal.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.