Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Türkçede kilit anlamına gelmektedir.Daha çok veritabanları için bu durumdan sözedilebilir.

Oracle'nin lock mekanizması kısaca şöyledir:
Update için satır bazındadır lock.Tablonun tamamı bir update ile kilitlenmez.Select yani okuma lock oluşturmaz.Update, Select için lock oluşturmaz.Update, diğer Update tarafından kilitlenir.

select * from scott.emp e where e.empno =  7369 for update

ile 7369 nolu satırı güncelleyeceğimizi, bu nedenle de herhangi bir commit ve rollback yapılmayana dek bu satırdan okuma yapılmamasını engellemek istediğimizi belirtiyoruz. Aşağıdaki sorgular sorunsuzca çalışır:
select * from scott.emp

update scott.emp e set sal = sal + 1000 where e.empno =  7499

Ama şu sorguyu çalıştırmaya çalıştığımızda ise, bir önceki lock dan dolayı sonuç alamayacağız.
update scott.emp e set sal = sal + 1000 where e.empno =  7369

mennan
03 Aralık 2005 00:04
2.  Static değişkenlerim multi-thread kullanımlarında birbirilerini ezmeden çalışmaları gerekiğini hepimiz biliyoruz.

Bu konu ile ilgili bir c# örneğini vermek istedim.

public static Object synchronizeVariable = "locking variable";

  public static void Count()
{
   lock( synchronizeVariable )
   {
     for( int count=1;count<=5;count++ )
    {
      Console.WriteLine( count + " " );nbsp;
      Monitor.PulseAll( synchronizeVariable );
      if( count < 5 )
       Monitor.Wait( synchronizeVariable );
     }
   }
}


bu örnekte Count metodu synchronizeVariable  değişkenini lock'layabildiğinde, for loop'una girer.
Fakat for loop'u içerisinde bir defa print yaptıktan sonra, synchronizeVariable  değişkenini bekleyen başka bir thread varsa, değişkeni o thread'e verir. Değişkeni alan yeni thread'de aynı işi yaptığını farzedersek, oda bir defa print yapacak ve değişkeni bir diğerine iade edecektir. Bu işlem herbir thread 5 e kadar print işlemi yaptığında sonlanır.

birkaç output örneği;

1 2 3 4 5 1 2 3 4 5

1 1 2 2 3 3 4 4 5 5

1 2 1 2 3 3 4 5 4 5

örneği aldığım kaynak: http://www.ondotnet.com/pub/a/dotnet/2001/08/06/csharp.html?page=1
haydar
13 Haziran 2006 10:47
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1140 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen