0
我想模擬FAM事件。該API似乎不支持這一點。 爲什麼?因爲我有一個線程正在等待FAMNextEvent(),我想從另一個線程中喚醒它。 我想我可以觸摸其中一個被監控的文件,但看起來很粗糙。模擬文件更改監視器(FAM)事件
我想模擬FAM事件。該API似乎不支持這一點。 爲什麼?因爲我有一個線程正在等待FAMNextEvent(),我想從另一個線程中喚醒它。 我想我可以觸摸其中一個被監控的文件,但看起來很粗糙。模擬文件更改監視器(FAM)事件
而不是使用FAMNextEvent
直接,關於
FAMCONNECTION_GETFD(FAMConnection)
select
或poll
如何,呼籲FAMNextEvent
之前檢查FAMPending
。線程將等待或者是FAM事件或寫入到自管字節。
謝謝!好想法。我不知道FAM在底層使用select。但是有道理。環顧四周,我讀了pselect()讓一個自我管道過時了。但我更喜歡在自管道上寫一個字節來發送信號。 –
@mikejones在多線程程序中處理信號是非常棘手的。用'signalfd'或避免信號會更好。 – ephemient
我花了相當長的時間才完成這項工作。我發現,當它出現在select()中時,我稱之爲FAMPending()。待定會報告沒有事件,但如果我回到等待select()它永遠等待。所以我放棄了FAMPending()並且直接去了FAMNextEvent()。然後我又有一個bug ......它沒有得到所有的事件。解決方案是在FAMNextEvent()之後檢查未決事件,當然,如果有任何事件返回到FAMNextEvent。 –