2014-06-12 40 views
0

在使用libevent的,用於檢測讀的非阻擋磁盤文件描述符(用於通過強制閉鎖gaurded文件),我面臨以下問題/寫準備:如何使用libevent來檢測何時釋放文件鎖定?

當一個文件被另一個進程鎖定爲IO,我得到當前進程中的EAGAIN發出讀/寫調用,這與API的已記錄行爲完全一致。

然而,當這些文件描述符被libevent的IO的準備調查,他們被檢測出IO準備,導致我的回調被調用。

我一直在試圖找到一個解決方案,但我不知道我是否在正確的線上搜索。是否有可能避免這些電話?

回答

0

According to POSIX

與常規文件關聯的文件描述符將永遠選擇準備好讀,準備寫,和錯誤條件真。

不確定是否有比產生一個阻塞該文件描述符的線程更好的方法,然後在解鎖文件時將事件發回到I/O線程。

inotify提供了一個事件時,鎖定或解鎖的時候,不幸的是,文件是打開或關閉,但不是。

+0

我想在單線程應用程序中實現異步IO。因爲鎖可能不是唯一的原因(理論上)的EAGAIN,這種方法不會對我工作 – skaur

+1

@skaur有時你別無選擇,只能創建另一個線程,並讓它阻止某些東西,以避免輪詢。 –

+0

@maxim ..我沒有選擇,然後,我想:) – skaur

相關問題