> > kalau saya pake non-blocking,
> > 
> > dev = open("/dev/blah", O_RDONLY|O_NONBLOCK, arg);
> > ret = read(dev, buffer, size);
> > process(buffer);
> > 
> > apakah anda bisa menjamin bahwa ret = size hanya
> > dengan sekali read()?

untuk memastikan supaya buffer penuh isinya terpaksa
dipakai:

   offset = 0;
   while (size) {
      ret = read(dev, buffer+offset, size);
      offset += ret;
      size -= ret;
   }

while() looping? 

> > 
> Bukankah ret memang enggak harus sama dengan size.
> Kalaupun ret harus
> sama size, itukan spesifikasi dari pemrogramnya,
> jadi enggak ada
> hubungan dengan non-blocking. Coba lihat skenario
> alternatif:
> 
> Thread A kirim data 8 bytes tiap detik, Thread B
> yang punya periode,
> katakan, 100 ms harus membaca message dari Thread A
> sebesar 16 bytes.
> Walau secepat apapun, Thread B ini tetep aja harus
> nunggu 2 detik untuk
> dapat menerima 16 byte.

Alangkah baiknya jika Thread B bukan periodik, tapi
event thread. Sementara Thread A ngisi buffer,
dijalankan Thread C. sampai akhirnya buffer penuh.
Thread A ngasih tau ke thread B untuk jalan.

> Bukankah polling itu akan selalu menyakan status
> kondisi dengan cara
> loop? Skenario yang anda uraikan di atas kan enggak
> ada loop dari
> fungsi yang memanggilnya, tidak juga fungsi di sys
> callnya. Dengan cara
> ini tidak ada cpu-resource yang terbuang dengan
> percuma (bukan waktu). 
> Dan itu kan sebenarnya yang dimaksudkan dengan
> kelemahan polling, yaitu
> menghabiskan resource cpu. Atau mungkin kita punya
> persepsi lain dengan
> istilah "poling"?

mungkin juga.....



=====
Salam,

I.B. Darmasakti
DSP Engineer

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

-- 
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3

Kirim email ke