2010-02-01 54 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

相关问题