Ben herşeyi biliyorum dersem çok büyük bir yalan söylemiş olurum, asla öyle bir birikimim yok. Çok zeki olduğum da söylenemez. Ama inatçı, azimli, araştırmacı ve okumayı seven birisi olduğumu söyleyebilirim. Benim de hızlıca kavrayamadığım konular olmadı mı elbette oldu, hâla da var. Bu hususta da endişe duymana gerek yok, kendini suçlamana ise hiç lüzum yok. Bu tarz durumlarda, kendine, öğrenmeye çalıştığın konuya küsmemen, mücadeleyi bırakmaman, yavaş yavaş, sabır ile öğrenme sürecine devam etmen gerekiyor. Bilmediğimiz şeylerin çokluğu, kuyunun çok derin olması asla seni korkutmasın, çünkü beni hiç korkutmadı, hâla da korkutmuyor. Çok kısa bir zaman önce yaklaşık 110 tane kitap daha satın aldım, fırsat buldukça okumaya ve kendimi geliştirmeye devam ediyorum.
Öğrenme süreci asla bitmez, ölene kadar devam eder. Bu bilinç ile hareket edilir ise hiç bir zorluk aşılamayacak boyutta büyük olmaz. Bir yazılımcı karşılaştığı problemi ne çok küçümsemeli ne de çok büyütmelidir. Temelde nelerin olup bittiğini biliyor olmak pek çok şeyin kafada düzgün bir mantıkla ve berrak bir şekilde oluşmasına neden olur. İşte bu sebep ile işletim sistemlerinin çalışma mekanizmalarını bilmek son derece faydalıdır. Ben tüm mekanizmayı biliyormuyum, hayır.! Ama öğrendikçe bazı şeyler çok daha yerli yerine oturuyor. Bu sebeple kendi öğrenme istikametimi sana da tavsiye etmek istedim. Bu nedenle asla yılma, asla küsme, araştırmaya devam et, yere düşersen kalk, yeniden araştır, yeniden dene. Öğrenmenin yolu, okumak, araştırmak ve azimle denemekten geçer.
Bu hususlarda kitap tavsiye etmemi ister isen ve ingilizcen var ise bir kaç kitap tavsiye edebilirim.
RADCoder yazdı:Cevabınız için minnetdarım..Sevgili kardeşim, muharrem bey'in sizin kalbinizi kırmak gibi bir gayreti olduğunu sanmıyorum. Sizi eleştirmek niyeti ile değil de öğrenmenize vesile olmak için çaba sarfettiğine inanıyorum. Threading denilen konu basit bir husus değil; öte yandan o kadar zor bir husus da değil. Sadece kurallarını bilmek, işletim sisteminin çalışma yapısına biraz hakim olmayı gerektiriyor. Ve inanın bana, bu hususlara vakıf olmanız, yazacağınız deneme projeleri ile değil, işletim sistemleri hakkındaki makale ve kitapları okuyarak daha hızlı gerçekleşir. Mühim olan bir thread oluşturup onun altında kod yazma yeteneğine haiz olmak değil, o thread'in ve benzer thread'lerin paylaşılan verilere erişimini düzgün bir şekilde yönetebilmektir.
Esas sorun, birden fazla thread'in ortak veri alanlarına erişip, onları kullanması sırasında gerçekleşir. İşte sırf bu sorunlardan ötürü, senkronizasyon mekanizmaları hayat bulmuştur. Sizden ricam benim makalelerim yada başkasının makaleleri, farketmez ama işletim sisteminin yapısı hakkında malumat elde etmeye çalışmanız yönünde olacaktır.
Bunu yaptığınız anda, gerek muharrem bey'in gerekse de benim gibi arkadaşlarınızın sizi eleştirme yolunda olmadığımızı, sadece kafanızdaki karışıklıkların aydınlanması için size yol göstermeye çalıştığımızı gözlemleyeceksiniz.
Esas soru, bir t zamanında, işletim sistemi üzerinde gerçekten de sadece 1 thread çalışıyor iken, biz nasıl oluyor da işletim sistemi içindeki tüm thread'leri paralel çalışıyor gibi görüyoruz. Bu ilüzyonun cevabını araştırmaya başladığınızda, thread scheduling kavramına girizgah yapmış olacaksınız. Ardından round robin ile tanışacaksınız, quanta zamanı ile karşılaşacaksınız. Sonra thread context'lerini anlamaya başlayacaksınız, instruction pointer'ın belirli bir yerden nasıl devam ettiğini kavramış olacaksınız.
Tüm bunları kavradığınızda, işini tam anlamı ile henüz tamamlayamamış bir thread kernel tarafından durdurulup, bir başka thread'e çalışması için şans tanınır ise, ortak veri bloklarına erişmeye çalışan ikinci thread'in okuyacağı datanın durumu hakkında sorular sormaya başlarsınız. Bu sorular, critical section, mutex, semaphore, interlocked fonksiyonları, waitable timer vb. senkronizasyon mekanizmalarını görmenize ve merakınızın bir kat daha artmasına neden olacak.
Öğrendikçe daha da acıkacaksınız, kendinize sınır vurmayın; gizli dünyaya bir adım atın![]()
Anlamak zorluğu çeke biliyorum bazen, doğru bu benim beceriksizliyim ola bilir. Öğrenile bilirmi tabi uzun bir zaman alsa bile mutlaka isteniyorsa öğrenile bilir..Tuğrul Abi verdiyiniz sayfayı hala okumaktayım ama kodları kopyalayıp çalıştırmadım bile, çünki konuya hakim olamıyorum..
İlk önce olayı anlamak istemekteyim, ben kendimin çok iyi türkçe bildiyimi sanıyorudum ama oysaki yazdıklarınızı okuyup gerçekten açıkca söliyeceğim googlede sözleri aratıp anlamlarını buluyorum. Ne kadar doğru bilemem o yoldanda yüruyorum. Tabi bu okada önemli bir sorun teşkil etmemekte.
Muharrem Abim çok güzel bir şey vurgulamış:Gerçek burada, mantığı kuramadım. Bazı konularda dediyim gibi beceriksiz ola bilirim..Mantık oluşmayınca asıl konuya giriş olamadı.
Elbetdeki bu işlevi benim tarafımdan yapılmasını görmek istemektedir Muharrem abi, birşeyleri örete bilmesi acısından daha keyif alıcı olurdu..
Bir projeye başlamadan önce hepimiz araştırma yaparız, konuyla ilgili.
Bende araştırmalar yapıp hata denemeler yapmaya başladığımda bilginin çok geç işlendiyini gördüm.
Tabi bu işlem Windows ortamında çok güzel çalışırken Mobil tarafta malesef çok can sıkıcı bir bekletme yaşatmaktadır.
Ama hazır kod olayını gerçekten ihtiyaç duysam böle birşeye tenezzül etmem.
Drek Kod isterim.. Forumlardada olmasa kişisel olarak..
İşte:Doğrudur Thread olayı çözer kelimesi olaya atlamaya yeterli olmaktadır, ki asla Thread kullanmadım..bir ihtiyaca binaen herhangi bir referanstan bir thread her şeyi çözer lafı akla girince, süreç o ihtiyaç özelinde yürüyor
Sadece arka arka basdırıpta her soruya cevaplar yazmamın nedeni cevap vermek için çok kısa bir sürem olduğu içindir.
Kimseyi ve en önemliside kendimi madur duruma sokmamak için işi Java yazılımcısına devr etmem bence en doğrusu oldu..
O yüzden çok sık aralıklarla konuyu takip edipde olayı anlamaya çalışıyorum.
Son gelen ekte aynı kod yazınca Muharrem abim ister istemez kızdı..Sizlere hak veriyorum ama benim sizler gibi düşemediyim ortadadır.
Ama Tuğrul abinin yazdıklarını okuyunca gerçekten basit olmadığını anladım. Bu günü kurtarmakla olmadığını bende çok iyi biliyorum. Onun içinde bir süre bilgisayardan uzak durup sonra temiz kafayla yazdıklarınızı okumaya ve örnekler yapmaya devam edeceğim..
Herşey için teşekkür ederim, hatalarım içinde çok çok özür dilerim..