Thread overview
Kanal (Thread) konusunda yeni araştırmalar
Apr 11, 2012
zafer
Apr 11, 2012
Salih Dinçer
Apr 11, 2012
zafer
Apr 11, 2012
Salih Dinçer
Apr 12, 2012
zafer
Apr 12, 2012
Salih Dinçer
Apr 13, 2012
mert
April 11, 2012
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?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2012

Şö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...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2012

Alıntı (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.

Alıntı:

>

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 :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2012

Sanırım Go Lang'da da kanal kullanılıyor...

Şurada (http://www.connorgarvey.com/blog/?p=221) okuduğuma göre, örnekteki chan aslında thread olsa gerek?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2012

Bilemiyorum Ali internette "İş Parçacığı" (http://tr.wikipedia.org/wiki/%C4%B0%C5%9F_Par%C3%A7ac%C4%B1%C4%9F%C4%B1) ş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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2012

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...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 13, 2012

Ve ayrıca kimlik belirteci 'Tid' olarakisimlendirildiğinden kanal, isimlendirmesi kavram karmaşasına neden olabilir.
Alıntı:

>

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]