2014-05-19 28 views
7

GHC çalışma zamanı içerisindeki bazı makaleler, bir dosya tanımlayıcısının okumaya/yazmaya hazır olup olmadığını algılamak için epoll/kqueue/poll komutunu kullandığını belirtiyor.GHC çalışma zamanı dosya G/Ç ile nasıl çalışır?

Soket I/O için nasıl yapıldığını anlayabiliyorum. Peki ya disk dosya erişimi? Anket syscall sıradan dosyalar ile çalışmaz, sadece soket I/O ile; doğru? Burada hayal

tek seçenek engelleme sistem çağrıları için bir iş parçacığı havuzu kullanan, bir iş parçacığı başına istek ... akıtılmamış RTS ise

+0

POSIX platformlarında (Linux, OSX ve BSD gibi) bir tanımlayıcı küçük bir tamsayıdır ve bir dosya, bir boru, bir soket veya tamamen farklı bir şey olabilir. Ve hepsi de çoğunlukla oylama gibi aynı destek işlevlerini destekliyorlar. –

+2

@JoachimPileborg disk dosyasında yoklama fd her zaman IO için hazır olduğunu geri döndürür, aslında bunu engellerdi. – user3489275

+1

@JoachimPileborg Üzgünüm ama bu BS. Ne kadar okumaya çalıştığınız önemli değil, yine de (O_NONBLOCK ile bile) engelleyebilir. – user3489275

cevap

3

, tüm çalışma zamanı engeller. Dişli RTS'de, iş parçacığı havuzu aracılığıyla böyle güvenli yabancı çağrıları yapacak, bu yüzden yetenek engellenmeyecektir.

İlgili konular