RE: [Linux-programlama] select

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Burak DEMIRKOL (burak.demirkol@isoft.com.tr)
Date: Fri 19 Nov 2004 - 11:01:35 EET


Hımmm anladım çok güzel bi signal handler işleyip orada işlemlerimi yapabilirim ve selecte gerek yok anladım.
Ama şimdi bende öle garip bir durum varki yine benim çözümüm orada geçerli gibi. Nasıl anlatsam ki şöle diyeyim mesela ;
Bir hata durumda soketten size hata durumunu veren 3 byte lık bişi geliyor ama hata olmadığı durumda ise hiç bişi gelmiyor.

Bu durumda eğer hata yok ise hiç bir zaman sizin yöntemde o signal fonksiyonlarınada gelmicek. Tamam gelmesin güzel ben işimi zaten yaparım. Ama gelirsede o zamana kadar yaptığım işlemler boşa gidecek yani beklememde lazım.
Ben ise şöyle yapıyorum. Bu bekleme esnasında diğer thread'i devreye sokarak bi şekilde başarılı olduğunu anlayabiliyorum ve başarılı olunca tamam sen artık select ten çık ve devam et diyorum. Başarılı olduğu noktadan itibaren select ten çıkması benim işime geliyor. Tamamen asenkron olması değil. Ama bu esnada da 30 beklemesin istedim. Çünkü zaten başarılı olmuş çıksın devam etsin dedim.

Burak DEMİRKOL

Yazılım Geliştirme Uzmanı - ISOFT

 

Mihribat Cad. Eryılmaz Plaza No:223 Kat 5

34810 Kavacık İstanbul - Türkiye

Tel +90 216 413 5000 Pbx

Fax +90 216 413 7377

e-mail burak.demirkol@isoft.com.tr

-----Original Message-----
From: linux-programlama-bounces@liste.linux.org.tr [mailto:linux-programlama-bounces@liste.linux.org.tr] On Behalf Of Serdar KÖYLÜ
Sent: Friday, November 19, 2004 11:00 AM
To: linux-programlama@liste.linux.org.tr
Subject: RE: [Linux-programlama] select

Selamlar..

> Zaten blokesiz (asenkron) soket kullanıyorum ve sokete yazma yapılana kadar select ile 30 sn timeout ile bekletiyorum. Bu bekleme esnasında diğer thread im çalışmaya devam ediyor ve öyle bir noktaya geliyorumki 30 sn bekleyen threade artık boşa bekleme sen devam et çünkü o sokete artık yazılmayacak demek istiyorum. Sorunun çıkış noktası işte tam burasıydı.
>
> Yani blokesiz modda açılmış bir soketi select ile beklerken timeout olacağını bildiğim halde neden bekleteyim?. O yüzden select fonksiyonuna birde pipe descriptörü verdim ve istediğim an diğer thread içinden pipe a bişi yazarak select fonksiyonunu sonlandırabilecek duruma getirdim.
>

İşte püf noktasıda bu zaten. Neden bekletmek ihtiyacı duyuyorsunuz ki?
Bırakın, veri gelince, işlem sinyal handler içinde halledilsin. Yani,
bir select ile bekletmenizin hiç anlamı yok.

Thread'ınız çalışsın güzel güzel. Hiç SELECT vs. koymayın. Nasıl olsa
socket hazır olunca bir SIGIO alacaksınız. Konu bundan ibaret aslında.

ASYNC I/O, anlamak, özümsemek zordur. Tıpkı pointer'lere benzer.
Non-block socket ile ASYNC Socket aynı şey değildir. Tıpkı Array ile
Pointer'in farklı oldukları gibi. Ama bir kere kavradınız mı, elinizdeki
en güçlü araç oluverirler. ASync işlevler, bekleme denen derdi ortadan
kaldırmak için vardır. Tepe tepe kullanılmalıdırlar..

Saygı ve sevgiler..

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.