社区
模式及实现
帖子详情
自定义CallBack函数,调用时立即返回
bobo463
2005-06-17 10:22:16
自定义一个回调函数,调用时,调用函数立即返回(不用等待CallBack执行完成,就像重叠IO中的重叠请求一样),不要线程实现。
------------------------------------
...全文
373
22
打赏
收藏
自定义CallBack函数,调用时立即返回
自定义一个回调函数,调用时,调用函数立即返回(不用等待CallBack执行完成,就像重叠IO中的重叠请求一样),不要线程实现。 ------------------------------------
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bobo463
2005-07-06
打赏
举报
回复
想到这个问题,对操作系统想了很久。突然发现对操作系统有了一点兴趣找了一些关于LINUX的文章看了看。发现上面的问题只有在操作系统内部实现(不使用用户现成的条件下)。现在想搞一个操作系统开发,大家也提一点意见啊!!
hdqqq
2005-07-01
打赏
举报
回复
我前两天正好写了一篇文章,讨论如何将 不同数量和不同类型参数的函数转换为函数子后,加入线程池非阻塞调用,不过用的是线程池实现的。有兴趣的人可以查看。
http://blog.csdn.net/hdqqq/archive/2005/06/29/407674.aspx
文中使用的是vc6 sp6 + lokivcport 库,有兴趣的人可以用vc创建一个使用标准库的控制台程序,然后将文章内容直接存为cpp文件后就可以测试运行,编译的时候需要用连接 libcmt库,需要在code generate 中设置使用 debug multi thread 或者multi thread 因为其中使用了 _beginthread函数。
欢迎大家参与讨论。
ihavenoidea
2005-07-01
打赏
举报
回复
不会吧 这不是并发吗~~
hdqqq
2005-07-01
打赏
举报
回复
我觉得这个问题考虑的关键,是程序运行的动力问题,不是说有了一段函数代码,我就可以不用任何代价的让它运行, 这个代价就是有一个 进程或者线程有cpu运行时间, 有一个运行栈,让这个函数运行. 否则,这个函数只是存在硬盘上的指令而已.
hdqqq
2005-07-01
打赏
举报
回复
回调函数在使用的时候实际上是传入的一个指针, 这个指针指向的函数并不是立即被调用的, 只是在需要的时候按照这个指针对进行回调,但是,关键的是,这个函数在那个进程中,或者线程中被调用,这个是函数得以运行的关键.
typedef void(*fun)(int a,char *s);
void testcallback(fun p,int a,char *s)
{
p(a,s);
}
....
调用
fun f;
void test(int a,char *s)
{
...
}
void main()
{
f=test;
testcallback(f,10,"this is test");
}
按照上面的代码,如果说testcallback(f,10,"this is test");是立即返回的,如果不用多线程,那么这个函数在那个进程中运行呢.它连被调用的机会都没有.我的建议是建立一个任务的线程池,可以向其中加入任何类型的函数作为任务让其运行,完成以后,这个线程池在回收可用的线程.
至于完成端口的实现,系统是如何实现的我不清楚,我估计是系统 对函数进行了回调, 但是, 操作系统也有自己的运行机会的. 所以回调函数得以运行.
beyondtkl
2005-06-30
打赏
举报
回复
那类似重叠IO中的完成例程,
void CALLBACK CompletionRoutine(……)。是如何实现的呢?
------------------
这是 OS 处理的.. 内部的处理 不可得知..如果谁也搞定了 绝对大牛!
timepalette
2005-06-30
打赏
举报
回复
那类似重叠IO中的完成例程,
void CALLBACK CompletionRoutine(……)。是如何实现的呢?
------------------
os 当然随便使用线程与同步, -- 它使用了你也不知道, 它也不会让你知道.
OS 即使不使用线程也有可能, 因为线程还不是OS管理的?它想怎么用CPU就怎么用CPU
jiangzhu20
2005-06-29
打赏
举报
回复
在学习!!!
bobo463
2005-06-28
打赏
举报
回复
那类似重叠IO中的完成例程,
void CALLBACK CompletionRoutine(……)。是如何实现的呢?
DanielWYO
2005-06-28
打赏
举报
回复
不用线程也要用消息或者什么有背后线程的东西, 否则能写出的话我还真佩服楼主了!
pubol
2005-06-27
打赏
举报
回复
你的意思是要实现两段代码的并发的执行,从操作系统的角度来讲,只有进程和线程才具有这一特性
bobo463
2005-06-27
打赏
举报
回复
我只是不想调用者不用被阻塞而已,但又不想用线程实现.
Wolf0403
2005-06-27
打赏
举报
回复
创建线程吧,或者直接 post 一个消息到已有的线程池中去
pubol
2005-06-24
打赏
举报
回复
搞不明白为什么要这么做
thesys
2005-06-24
打赏
举报
回复
明显违背逻辑。
调用者立即返回了去执行后面的代码,同时被调用函数也在执行自己函数内部的代码,这就只能是两个线程。
bobo463
2005-06-23
打赏
举报
回复
我需要它立即返回啊!各位大虾有没有方法实现啊!
qrlvls
2005-06-23
打赏
举报
回复
忌牵强附会 -_-!!!!
pubol
2005-06-22
打赏
举报
回复
可以的,回调函数产生的效果和事件是一样的,标准的c/c++是通过传递函数指针参数来实现的
c#中有现成的修饰词可以使用,我以前写过dll里实现回调,然后执行某个操作,自动触发调用程序的某个函数进行消息通信
beyondtkl
2005-06-22
打赏
举报
回复
不行吧,不用线程。。。调用函数 的堆栈 跟 回调函数的 在一起的呀(挨着)
除非你手工修改esp 不过修改了 可能回调函数就执行不到了之类的。。。
pubol
2005-06-22
打赏
举报
回复
刚才不小心按了发出了
重新写过
标准c/c++实现
typedef void(*fun)(int a,char *s);
void testcallback(fun p,int a,char *s)
{
p(a,s);
}
....
调用
fun f;
void test(int a,char *s)
{
...
}
void main()
{
f=test;
testcallback(f,10,"this is test");
}
加载更多回复(2)
演示如何实现jquery的回调
函数
通过jquery,通过ajax技术访问 server.asp,然后在用回调
函数
实现本地javascript的
调用
。这样可以实现通过服务器端控制客户端的html元素。 <!--html客户端代码,演示如何
调用
jquery的回调
函数
-->
浅析PHP中call user func()
函数
及如何使用call user func
调用
自定义
函数
使用call_user_func
函数
,通过传入字符串
函数
,可以
调用
自定义
函数
,并且支持引用。该
函数
允许用户
调用
直接写的
函数
并传入一定的参数,下面总结下这个
函数
的使用方法,需要的朋友参考下
JQ插件第五十二:
自定义
上传HTML控件
自定义
文件上传框上传成功后显示图片的
函数
是
callback
,
调用
正式操作之前的
函数
是callhook。前者是反馈图片在服务端路径,后者是添加使用插件之外需要布置的其他辅助代码。
AlertBox:这是确认的组成部分
可让弹框出现
调用
实例方法alertDestroy()可让弹框消失参数:string传入的字符串为弹框中出现的提示内容参数:
callback
传入的
callback
函数
可以
自定义
Demo 一分钟教你写弹框1、 新建一个HTML文件,为弹框准备一个可...
jquery中的ajax方法怎样通过JSONP进行远程
调用
dataType:
返回
的数据类型 jsonp:传递给请求处理程序或页面的,用以获得jsonp回调
函数
名的参数名(一般默认为:
callback
) jsonp
Callback
:
自定义
的jsonp回调
函数
名称,默认为jQuery自动生成的随机
函数
名,也可以写”...
模式及实现
5,530
社区成员
4,169
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章