Gördüğüm tartışmadan, atomik işlem ve iplik güvenliği aynı şey gibi görünüyor , ancak birçok insan farklı olduklarını söylüyor. Birisi varsa farkı bana söyleyebilir mi?
Gördüğüm tartışmadan, atomik işlem ve iplik güvenliği aynı şey gibi görünüyor , ancak birçok insan farklı olduklarını söylüyor. Birisi varsa farkı bana söyleyebilir mi?
Yanıtlar:
Atomik işlemler, dahili olarak atomik işlemler kullanan Mutexes veya Semaphores gibi bir tür kilitler kullanarak veya atomik ve bellek çitleri kullanarak kilitsiz senkronizasyon uygulayarak iplik güvenliğini elde etmenin bir yoludur .
Bu nedenle, ilkel veri türlerindeki atomik işlemler, iplik güvenliğini sağlamak için bir araçtır, ancak normalde birbirine dayanan birden fazla işleminiz olduğundan, iplik güvenliğini otomatik olarak sağlamaz. Mutexes gibi bu işlemlerin kesintisiz yapılmasını sağlamalısınız.
Evet, bu atomik veri türlerinden birini c # dilinde yazmak iş parçacığı için güvenlidir, ancak iş parçacığı içinde kullandığınız işlevi güvenli hale getirmez. Yalnızca tek bir yazma işleminin "aynı anda" ikinci bir iş parçacığına erişmesine rağmen doğru şekilde yürütülmesini sağlar. Daha azı, şimdiki evreden bir sonraki okumanın, daha önce farklı bir evre yazmış olduğu gibi, daha önce okunan değerin elde edilmesi için garanti edilmez, sadece okunan değerin geçerli olması sağlanır.
Atomisite ve iplik güvenliği iki farklı şeydir. Atomisite, bir operasyonun "ya hep ya hiç" kalitesini ifade eder; bir işlem% 100 başarıyla gerçekleştirilemezse, sistem işlemin herhangi bir bölümü başlamadan önceki durumunda kalmalıdır. Klasik örnek bir veritabanı işlemidir; Üstbilgi ve birden çok satır öğesi dahil olmak üzere bir faturayı kaydederken, her bir veritabanı satırının her bir bölümünün başarıyla yerleştirilmesi gerekir; değilse, veriler kaybolur veya bozulur. Bir satır öğesi eklenemezse, yalnızca başka satır kalmamalı, aynı zamanda önceden işlenmiş satırların hiçbiri kalmamalıdır.
İplik güvenliği, bir işlemin "yeniden girme" olmasına izin veren atomisite de dahil olmak üzere bir şeylerin kombinasyonunu ifade eder; birden fazla işçi aynı işlemi, aynı veya farklı zamanlarda başlayarak, başka herhangi bir etkisi olmaksızın gerçekleştirebilir. İplik güvenli çalışma için birçok model vardır; birçoğu kavramsal olarak ya tamamen paralel olarak birden fazla paralel görev yürütmekle kaynar (iki işçi, aynı işçiyi diğer işçinin var olduğunu bile bilmeden iki farklı nesne veya nesne koleksiyonunda gerçekleştirebilir) ya da içinde bir "boru hattı" kurabilir birden çok çalışanın her biri bir operasyonun tamamında bir görevi yerine getirir (ya her bir işçi ilk görevden diğerine ilerler ya da böyle devam eder, ya da başka bir işe odaklanır ve ara "iş ürününü" bir sonraki işçiye teslim eder).
Atomik işlem, kesilemeyen bir işlemdir.
Güvenli bir diş, güvenle kesilebilen bir diştir.
İş parçacığı güvenliği, özellikle kritik kaynaklara birden çok kez erişilmesini engelleyen mantıkta olmak üzere atomik işlemlerle elde edilir.
Temel atomik işlem, semaforların uygulanması için kullanılan Test-ve- set'tir ve bu da iplik güvenliğini uygulamak için kullanılır.
İş parçacığı güvenliği daha çok bir çerçeve veya bir "kavram" dır, atomik işlem bir alt kümedir, "iş parçacığı için güvenli" olarak sınıflandırılmış bir statüye ulaşma aracıdır.
İş parçacığı güvenliği, ayrı iş parçacıkları tarafından erişilebilen bir işlem anlamına gelir; burada bir kişinin erişimi (ve verilerin manipülasyonu), diğerinin işleminin bütünlüğünü bozmaz.
Programcının becerisinin çoğu, duruma ve anahtar hedefe bağlı olarak, bunu nasıl gerçekleştireceğinizi bilmektir, örneğin: kilitler, semaforlar, mandallar, atom nesneleri, senkronizasyon kuralları vb.