RSS

C#, synchronization, mutex, critical section ve threading modelleri; Smalltalk, Squeak ve Ruby

22 Jun

Kuştepe C# toplantılarında yaklaşık bir haftadır gündemdeki konu multithreading. Hyper-threading mimarisinin yol açtığı garipliklerden “cache sloshing” problemlerine, Windows sistemlerindeki process/thread altyapıları ile GNU/Linux, vb. sistemlerdeki muadilleri arasındaki farklardan “threading” modellerine, critical section kavramından senkronizasyon / kilitleme (locking) yöntemlerine dek pek çok konu ele alındı ve örnekler yapıldı. Arada bol bol Dijkstra‘ya ve INTEL’in VTune, ThreadChecker, vb. göndermede bulunuldu, örnek performans analizleri gerçekleştirildi. (Bununla ilgili önemli bir belge: Threading Methodology: Principles and Practices.)

Bugünkü toplantının konusu ise mutex ve örnek kullanımları idi. Önce bir uygulamadan iki tane başlatmama işlevinin mutex kullanımı ile nasıl gerçekleştirebildiğine baktık ardından da egzersiz yapmak için küçük ekiplere bölünüp “çalışan bir proses (uygulama) sonlandığında buna uyanan ve prosesi (uygulamayı) tekrar çalıştıran ancak bunun için I/O işlemi yahut proses listesini kullanmayan bir mekanizma geliştir” problemini çözebilecek C# kodunu yazmaya çalıştık. Böyle bir şeyi gerçekleştirmek için prosesler arası mutex yapısını kullanmanın en büyük avantajları şimdilik: kurulan döngünün sıkı bir döngü olmaması (dolayısı ile sistemi çok az meşgul etmesi), herhangi bir dosya G/Ç işlemine ihtiyaç duymaması, proses listesi yapısına başvurmak ve onu sürekli “poll” etmek zorunda kalmaması gibi görünüyor.

Bu bağlamda Jeffrey Richter’ın Reader/Writer Locks and the ResourceLock Library makalesi ile Stephen Toub’un Parameterized ThreadStart, EventWaitHandle, and More makalelerini de göz önünde bulundurmakta fayda var.

Günün asıl atraksiyonu ise Dolapdere tesislerinde öğleden sonraki kısa süreli Smalltalk ve Squeak kurcalama seansı idi. eMBA yazılım geliştirme ekip sorumlusu Memduh ile birlikte cicili bicili ve uzun zamandır beklediği oyuncağı elde etmiş çocuklar gibi Squeak’a saldırdık ve bir yandan videoları izleyip bir yandan denemeler yaptık. (Video demişken Google’daki Smalltalk videolarına da bakmakta fayda var!)

Sonuç: Uzun süredir Java ile uğraşan ve “Agile” / “Test Driven Development” ortamlarının meşhur isimlerinden Kent Beck ile Martin Fowler‘ın neden pek çok kitaplarında ve makalelerinde “ah şimdi elimizde Smalltalk olacaktı ki… neyse…” şeklinde cümleler kurduklarını sanırım daha iyi anlamaya başladım. (Birkaç yıldır pek çok iş için Ruby kullandığını belirten Fowler’ın bazı blog girdilerinde “Smalltalk kadar olmasa da hiç değilse Ruby var…” tarzında şeyler yazdığını görüyorum).

Advertisements
 
Leave a comment

Posted by on June 22, 2006 in .NET, General, Programlama

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: