2010-02-01 84 views
0

我應該提到我使用Mac OS X,XCode。任何人都可以用C++解釋事件處理嗎?

當一個緩衝區寫完文件後,它會生成一個事件告訴gui讀取文件中的數據。

我不確定在這種情況下我需要什麼樣的事件?沒有使用事件可以做到嗎?

謝謝。

+1

什麼樣的「事件」? – 2010-02-01 21:19:39

+1

「事件」不是C++中的第一類構造,它們通常被實現爲回調函數。這不是一個真正的問題。 – 2010-02-01 21:20:16

+4

請更具體。 C++中沒有「事件」概念。你是指窗口環境? – 2010-02-01 21:20:57

回答

1

C++中的事件處理主要由異常和信號組成。這些處理方式的確切細節最好在規範或Stroustrup的書籍中描述。

其他事件處理,如鼠標點擊,中斷和信號量,由OS處理。不同的操作系統具有不同的API並設置處理事件的要求。許多多線程和多任務操作系統允許程序在發生事件(例如設置信號量,生成信號或發送消息)之前進入休眠狀態。

當完成寫入文件時,您需要有程序或線程信號 GUI。 信號由您的操作系統或GUI框架定義。在大多數設計中,緩衝區不會寫入文件。程序,任務或執行線程將文件緩衝區寫入文件。有一個緩衝區寫入文件可能會產生更多的信號或上下文切換,而不是讓一個線程將緩衝區寫入文件。

-1

這可能沒有事件,但你需要進行民意調查。檢查boost :: asio。它用於網絡連接,但是我聽說你可以寫入文件並在完成時爲你調用一個函數。 (當然是異步的)。還有boost :: signals2,你可以在線程中使用,當寫入線程完成時,使用信號來調用「寫入完成函數」。您甚至可以使用信號,通過boost :: bind傳遞文件名或句柄,以便顯示重要信息。

+2

這是不連貫的,只與模糊的問題有關 – 2010-02-01 21:31:18

相關問題