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 - 10:13:02 EET


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.

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 10:12 AM
To: linux-programlama@liste.linux.org.tr
Subject: RE: [Linux-programlama] select

Selamlar..

> Düşündümde evet en mantıkılısı pipe kullanmam. Sana katılıyorum. Zaten yaptığım şey bir nevi kendi processim içinde haberleşme olduğu için isimsiz pipe bile işimi görür. Hem select den çıkarmak için kullanırım hemde selectten neden çıkmış diye pipe ın içini okuyup değişik kontroller uygulayabilirim.

Aslında en mantıklısı değil. select() ile beklerken timeout kadar süre
resmen donarsınız. Uygulamanız belki bundan etkilenmeyebilir,
bilemiyorum, ama bir ftp/http vs. clienti bundan cok kotu etkilenebilir.

Burada izlenmesi gereken yol, Asynchronous Socket I/O olacaktır. Soketi
fcntl ile (FASYNC) async hale getirip, bir SIGIO/SIGURG handler kurulur.
Bu handler içinde gereken yapılır. Hatta bu bölüm bir thread olabilir
vs. Sonuçta programınız IDLE halinde iken dilediğini yapmakta özgür
olur. Eh, buraya da bir while(1) koyup CPU'yu %99 yükle ısıtmakta
kabildir. Ama yapabileceğiniz bir sürü iş bulursunuz sanıyorum bu
çevrimde.. Fakat, bilhassa X11 uygulamaları gibi event bekleyen
uygulamalar için bu yöntem çok daha kullanışlıdır.

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.