Forum: Ders Arası RSS
Kanal (Thread) konusunda yeni araştırmalar
thread, function, delegate kavramları
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Kanal (Thread) konusunda yeni araştırmalar
import std.stdio;
import std.concurrency;
import core.thread;
 
 
void main() 
{
    // Bir işlev göstergesi tanımlayalım
    void function() say = &SayiSay1;
 
    // Şimdi kanalın çalıştırması gereken 
    // metodu işlev göstergesi olarak geçelim
    spawn(say);
 
    
    // Bunu yapamadım ??
    void delegate() say = &SayiSay1;
}
 
void SayiSay1()
{
    for (int i = 0; i < 10; ++i)
    {
        writefln("-> Ben birinci sayacim %s numarasindayim.", i);
    }
}

Salih'in sürüklenme etkisinde kalmış olacağım ki bende kanallar konusunda küçük denemeler yapıyorum. Yukarıdaki kodda kanala bir fonksiyon gösterici geçmeyi başardım ancak sonra temsilci geçmeyi denediğimde temsilci tanımını beceremedim. Sorun nedir dersiniz?
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
spawn()'ın ilk parametresi 'function' olmalı:

  http://dlang.org/phobos/std_concurrency.html#spawn

Ayrıca thread'e karşılık kanal terimi doğru mu? İngilizce'de thread'den başkaca 'channel' diye bir kavram da bulunduğu için onunla karıştırılabilir.

Ali
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Şöyle düzenledim:
import std.stdio, std.concurrency;
 
void main() 
{
    // İsimsiz bir işlevi temsil edelim
    int delegate (int xSay) xKaresi = (k) => k * k;
 
    // Bir işlev göstergesi tanımlayalım
    void function(int xSay) say = &SayiSay1;
 
    // Şimdi kanalın çalıştırması gereken 
    // metodu işlev göstergesi olarak geçelim
    spawn(say, xKaresi(2));
}
 
void SayiSay1(int xSay)
{
    for (int i = 0; i < xSay; ++i)
    {
        writefln("-> Ben birinci sayacim %s numarasindayim.", i);
    }
}
Zafer eline sağlık, ne zamandır aklımda olan denemeyi gerçekleştirmişsin. Ben delegate ve lambda gibi şeylere çok yabancıyım. Hele spawn() işlevine adres göndermeden bu şekilde tanımlamak çok güzel olmuş. Örneğin pizza DLang gibi işlev kaynayan bir uygulamada hemen main() içinde ne nedir görülebilir. Sevdim bunu...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
zafer #4
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
acehreli:
Ayrıca thread'e karşılık kanal terimi doğru mu? İngilizce'de thread'den başkaca 'channel' diye bir kavram da bulunduğu için onunla karıştırılabilir.

Türkçe kaynaklarda genelde kanal kelimesi kullanılıyor. Anlamca karşıladığı için benimde hoşuma gidiyor (farklı kanallarda çalışan işlemler). Bahsettiğin anlam karmaşası konusunda haklısın, başka bir öneri varsa onu kullanabiliriz benim için sorun olmaz.

Zafer eline sağlık, ne zamandır aklımda olan denemeyi gerçekleştirmişsin.

Birisinin işine yaradığına sevindim, Sende benim istediğim hale getirmişsin, sanırım ilk mesajı yazarken kafam karışıktı spawn() metoduna temsilci göndermeye çalışmışım :)
https://github.com/zafer06 - depo
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Sanırım Go Lang'da da kanal kullanılıyor...

Şurada okuduğuma göre, örnekteki chan aslında thread olsa gerek?
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kanal konusunda tek bildiğim, anlamsal olarak farklılar. "The main thread creates two channels" diyebildiklerine göre thread ile channel farklı. D dünyasında channel sözü geçmiyor. :-/

Ali
zafer #7
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bilemiyorum Ali internette "İş Parçacığı" (http://tr.wikipedia.org/wiki/%C4%B0%C5%9F_Par%C3%A7ac%C4%B…) şeklinde bir isimlendirmede kullanılmış.

Ancak önceki mesajımda da belirttiğim gibi kanal bana daha doğal geliyor belkide alışkanlık bilmiyorum. Benim aklıma bir öneri gelmiyor, aklınıza gelen gir kelime varsa yazın tartışalım fikir birliği sağlarsak onu kullanırız.
https://github.com/zafer06 - depo
Avatar
Salih Dinçer #8
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bence çok önemli değil çünkü parantez içinde neyi kastetdiğimiz belirtirsek sıkıntı olmaz...

Bu durum, bazı zaman;
while (true)
{
    : : :
}
yerine şu şekilde kullanmak bize daha insancıl gelebiliyor:
do
{
    : : :
}while (true);
Ancak şu da var, kanal Türkçe bir kelime değil ve konunun orijinali Thread olarak geçtiğine göre (önr. multithread, hyperthreading vb.) ama iş parçacığı yazmak zor olsa bile, yine de ne ise onu kullanırsak terim karmaşalarını önleyebiliriz...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
mert #9
Üye Ara 2010 tarihinden beri · 194 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ve ayrıca kimlik belirteci 'Tid' olarakisimlendirildiğinden kanal, isimlendirmesi kavram karmaşasına neden olabilir.
Ancak şu da var, kanal Türkçe bir kelime değil ve konunun orijinali Thread olarak geçtiğine göre (önr. multithread, hyperthreading vb.) ama iş parçacığı yazmak zor olsa bile, yine de ne ise onu kullanırsak terim karmaşalarını önleyebiliriz..
Ortak projelerde terminoloji de tutarlı olmalıdır görüşündeyim. İş parçacığı çok daha uygun geliyor mantığıma
mert
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 03:08:54 (UTC -08:00)