命名有问题.
我想问的是 等待回调函数的回调者 完全回调完.func x1()
{
...
// 下面使用另一个库中的 函数 otherLibFunc,
// 此函数需要一个函数指针以作回调
otherLibFunc( ... , callback_func_ptr);
// 因为不知道 otherLibFunc 会回调 callback_func_ptr 多少次,
// 我想等待 otherLibFunc 回调完(不会再回调 callback_func_ptr), 然后再进入下面的代码.
// ...确保 otherLibFunc 不会再回调 callback_func_ptr??
....
}
我想问的是 等待回调函数的回调者 完全回调完.func x1()
{
...
// 下面使用另一个库中的 函数 otherLibFunc,
// 此函数需要一个函数指针以作回调
otherLibFunc( ... , callback_func_ptr);
// 因为不知道 otherLibFunc 会回调 callback_func_ptr 多少次,
// 我想等待 otherLibFunc 回调完(不会再回调 callback_func_ptr), 然后再进入下面的代码.
// ...确保 otherLibFunc 不会再回调 callback_func_ptr??
....
}
解决方案 »
- 问关于“error in OMF type information”的问题
- 如何让多用户共享同一个已命名内存映射?
- 一个很诡异的问题,百思不得其解,关于非模式对话框的,经验丰富的大虾请进!
- 做界面的朋友们进来讨论一下 在自画对话框的 几个难点问题!!!
- !!!!请问如何判断某个程序正在运行?
- 正调试着程序,怎么后来就不能调试了啊?好像说找不到XX.exe文件??
- 如果我int a[1000],那么当程序执行到这个语句时会在栈中新开内存还是程序装入时就在栈中把内存预订好?还有栈是一个先进后出的结构,那我想取中间一个变量,如a[500],不是要把比a[500]后进栈的全给倒出来?
- 大家好:关于对话框中按钮上字的改变
- 请高手帮忙啊
- 请问我想在一个窗体启动时,同时显示一个滚动条在往前增加在哪个消息中?
- 请教关于在VC中调用win32 dll工程中,再调用DialogBoxParam显示界面的问题...
- 基于对话框的程序、怎么改变鼠标指针?@_@
其他lib 是别人提供的, 自己不能作修改.
参数表没有提供 custom type, 没法设置标记.
{
//回调
}
otherLibFunc( ... , callback_func_ptr);
while(flag == false){}
...
----------------------------void callback_func_ptr()
{
....flag = true;
}
有点异y,
总的来说, 就是无法确定 lib 什么时候回调, 回调多少次.
如果 lib 预期会调用 n 次,第n 次之后如果主动通知我 "不用再回调了", 就解决问题了.
现在是没法接到通知的情形下, 要等待...
没有办法设置信号.
所以不用等,等此函数调用完成时已经是回调完成了吧。如果启动的新线程进行的回调(异步),那你知道次数吗,如果知道就在自己函数callback_func_ptr中记数,然后设置标记。如果可以修改otherLibFunc的代码,建议加上回调完成的标记。这样是最方便的了。
但 flag=true 这句在第几次回调时设定呢?
..?
你这是当 lib 第一次回调 callback_func_ptr 时, 就将 flag 置 true.
并不能确保它再次调用前 flag 仍然为 false.
libfunc(..., callback_func_ptr,...)libfunc 可能会记录下这个 callback_func_ptr, 以便有需要时回调. 但 libfunc 会立即返回.这样就产生我的问题了, 我不可以保证 callback_func_ptr 在 libfunc 的域中已经失效了.很麻烦, 看来要 提供lib 方增加标志?????
callback_func_ptr
这个函数每做完一件事情,你的程序会发生什么变化。比如说数据队列里面增加了元素,你给的libfunc(..., callback_func_ptr,...) 似乎只是注册回调函数,而并没有执行同时执行。
Win32 中有关 回调函数的函数 是 同步还是异步的, msdn 似乎没有说明.
而且某些 也需要和这个问题作相同的处理(一直等待).