Windows Mobile / C:等到变量发生变化

时间:2009-09-14 10:45:24

标签: c++ c windows-mobile wait

我目前正在为C / C ++中的Windows Mobile编写一个包装库。我必须实现并导出以下函数:

void start_scanning();
int wait_for_scanning_result();
void stop_scanning();
调用

start_scanning()开始扫描过程。 wait_for_scanning_result()将等待结果可用并将其返回,stop_scanning将中止该过程。

我正在使用的库有一个回调函数,在结果可用时执行。

void on_scanning_result(int result)
{
   /* My code goes here */
}

不幸的是我必须实现上面的功能,所以我的计划就是这样解决它:

void on_scanning_result(int result)
{
   scan_result_available = 1;
   scan_result = result;
}

int wait_for_scanning_result()
{
   /* ... wait until scan_result_available == 1 */
   return scan_result;
}

我不知道如何在windows / C中执行此操作,如果有人可以帮助我或告诉我必须使用哪些功能来完成此操作,我会很高兴。

2 个答案:

答案 0 :(得分:3)

您可以使用Windows Synchronization Functions

基本上你所要做的就是:
  * CreateEvent - 创建活动
  * WaitForSingleObject - 等待此事件发出信号   * SetEvent - 发出事件信号

答案 1 :(得分:0)

像这样的东西,我希望:

//declare as volatile to inform C that another thread
//may change the value
volatile int scan_result_available;

int wait_for_scanning_result()
{
    while(scan_result_available == 0) {
        //do nothing
    }
    return scan_result;
}

您应该查明回调是在另一个线程中运行,还是在同一个线程中异步运行,或者库是否需要其他方法来允许回调运行。