2015-12-18 15 views
5

I/O kuyruğu olarak hareket etmek için ayrı bir iş parçacığı oluşturabilirim, ancak bunun en iyi yol olup olmadığından emin değilim. En iyi gibi görünüyor.Bir dosya senkronize olmayan nasıl okunur?

Yerel bir dosyanın nasıl yükleneceğini mio ile bilmiyorum.

+4

Bir dosyayı eşzamansız olarak mio ile nasıl okuyacağınızı bulamadığınız için, bu proje için açıkça bir hedef olarak listelenmediğinden kaynaklanır.^_^ – Shepmaster

+4

Rust hakkında çok fazla şey söyleyemem, fakat bir işletim sistemi açısından (bu, hepsi olmasa da, genel sistemlerin büyük çoğunluğu için geçerlidir) bir iş parçacığı oluşturmak en iyi çözümdür. Asenkron I/O ya yetersiz, işe yaramıyor ya da tüm ana işletim sistemlerinde (ne iddiaları olursa olsun) hiç çalışmıyor. – Damon

+0

'MADV_WILLNEED' ile 'madvise' deneyebilirsiniz. Rust'ta "libc" sandığında olacak (https://crates.io/crates/libc/; http://rust-lang-nursery.github.io/libc/x86_64-unknown-linux-gnu/ C kütüphanesi/fn.madvise.html). – ArtemGr

cevap

1

Başka bir iş parçacığının kendiliğinden atılmasını öneririm. io bunu yapmayı planlamamaktadır ve kendi async yükleyicinizin okuma/yazma işlemlerinin nasıl ve ne zaman gerçekleştiğini tam olarak kontrol edebilmenizi sağlar, bu sizin performansınız sizin için önemliyse (hangisini tahmin edeceğimiz gibi, uyumsuz diske ihtiyacınız varsa) I/O). Tek bayt, tek satır yazmayı/okumayı veya blokları biriktirip yazmayı ve yazmayı seçebilirsiniz. Eğer uygulama başka zamanlarda ağda olduğu gibi başka bir şeyde bekliyorsa, örneğin diske yazmayı seçebilirdiniz.

+1

Standart kütüphaneden gelen ** io ** 'nun bunu desteklemeyi planladığını gösteren bazı kaynaklardan bahsedebilir misiniz? – Shepmaster

İlgili konular