Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

ekstra bilgisayar gücü


pontipati

Öne çıkan mesajlar

bazı dillerde multi-threading(paralel programlama) çok zor oluyor hakikaten paso sorun çıkarıyorlar, özellikle eski diller çıkarıyor böyle sorunlar. özellikle syntax paralel programlama düşünülerek yazılmadığı için, multi-threading denerken zaten yazdığı kod bir garip geliyo insana.

neyse biraz anlatayım multi-threading nedir bilmeyenler için, ondan sonra kısa bir çözüm önereyim(eğer ki sizin dilde de böyle multi-threading "düşmanı" bir dilse diye, ya da diğer aynı dertten müzdariplere de yarayabilir).

abi şimdi tek işlemci zamanları, hiç düşündünüz mü winamp'la, msword çalışırken arka planda, siz nasıl ageof oynuyordunuz. işte multi-threading sayesinde. thread, tek işlemci tarafından, belli bir sürede yapılması gereken işe deniyor. "int main(){....return 0;}" tarzı bir koda yani. işletim sistemleri de thread'lere bankalar müşterilerine nasıl davranırlarsa öyle davranıyorlar. işte kritik önemde programlara(müşterilere daha iyi sıralar veriyorlar), daha önemsizlere daha kötü. önemsizlere sıra daha seyrek geliyor, önemlilere sık geliyor tabi ki. sıra geldiğindeyse T süre boyunca işlemci sırası gelmiş işlemle uğraşıyor. T süresine quantum derdik biz, başka isimleri de varmış. T süresi bittiğinde, o tread'i durduruyor işlemci, sırası gelmiş diğer bir thread'i yeniden aktive ediyor. arada synchronization problemleri/thread değiştirirken yaşadığın zaman kaybı için T süresinin belirlenmesi vs gibi problemler var, ama tabi bunlar artık genel olarak bi şekilde çözülmüş problemler. işlemci çok çekirdekli olunca da, vezneye daha çok adam alıyorsun olay bu.

işte her program zaten bir thread, ama program yazarken "thread aç", o thread'de de şunu yap da diyebilirsin programlama diline. fonksiyon tanımlamak gibi birşey olur genelde o kısım.

şimdi bazı dillere "thread aç" komutu sonradan eklendiği için syntax'a uymuyor vesaire sorun çıkarıyor demiştim ya. bilmiyorum pek mesela matlab'da öyleymiş galiba birinin dediğine göre.

neyse bu problemin kenarından sıyrılma şansı var ama. benim bildiğim/kullandığım hiçbir programda olmadığını görmedim. ki çok eski bir özellik olduğundan syntax'ta sıkıntısı yok, çünkü hep konuldu bu ve önemli bir şey olduğundan da çıkarılması mantısız: argüman.

şimdi C koduna başlarken neden int main(int argc, char **argv)
diye başlıyoruz genelde? çünkü dışarıdan argüman alabiliyor fonksiyonumuz hakikaten, sonunda genelde yazdığımız "return 0;"'sa döndürdüğü şeyler fonksiyonun, başka şeyler de döndürebiliriz tabi ki. dos kullanmış olanlar hatırlar "dir /p"yi vesaire. işte "/p" programa dışarıdan verdiğiniz bilgi programa. bunu kullanabilirsiniz multi-threading için.

yapacağınız şey şu, thread'lerinizi dışarıdan argüman alacak ve onun üzerine hesap yapacak, cevabı da return edecek şekilde yazacaksınız. yani her thread bir program olacak. sonrasında threading'in kolay olduğu bir program, örneğin java'da bir genel program yazacaksınız. ne yapacak o program bir thread açacak, o thread'de yazdığınız ilk programı açacak; ikinci thread ikinci programı vesaire. sonra hepsinin çözümünü birleştirip halledecek işini işte. bu yöntemde de büyük sorun, data structure'ların birinden birine dönüştürülmesi falan. orası hakikaten tam bir işkence, ama alternatif bir çözüm işte kenarda dursun diye söyledim.

bu sorunda özellikle, sizin dilde threading fonksiyonları bok gibiyse kullanılabilir. çünkü sonuçta sizin dilde polinomlar argümanla geçirilebilecek kadar basit yapılar. matrislerde geçirilir tabi, ama gruplar vesaire acı çektirir muhtemelen.
sizin dilde multi-threading varsa zaten direk onu kullanırsın, böyle maceralara girmeye gerek yok.

neyse amacım ukalalık falan değil; bilenlere öğretmek falan da değil, hatta yanlışım varsa düzeltirseniz hoş da olur. bir de wot oldu biraz da kusuruma bakmazsınız.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...