看了一点点线程池方面的东西,有个基本的概念非常疑惑。既然用winapi和crt创建线程,都是在创建的时候去指定这个回调函数,以及回调函数的参数。那么,不管是OS的线程池还是自己实现一个线程池,都涉及到一个问题:如何给一个已经存在的线程句柄,去掉原来绑定的函数,而绑定一个新的函数上去? 靠什么api调用?还请高手解答一下原理
解决方案 »
- rebuild Solution通不过,build Solution通过??
- 请教哪个会先启动?服务程序和自启动RUN键值下的程序。
- listctrl滚动条的响应
- 声明类 class OX_CLASS_DECL CMyTest 时,"OX_CLASS_DECL"为何意?
- 关于在ondraw()中会闪的问题
- 紧急求救:映射网络驱动器用WNetAddConnection2返回ERROR_INVALID_PARAMER错误!
- 求救!关于 vc com 的问题
- 请问:atl写的service exe,有个接口函数,程序如何调用?
- 我想在2005下修改默认的工程路径宏,请问如何做?
- CDOC的变量值不能传递给Cview类?
- vc2005操作excel问题
- 关于 CUIntArray 类的几个成员函数
DWORD WINAPI ThreadProc (LPVOID lpParam)
{
Cxxx* t = (Cxxx*)lpParam;
while (1)
{
//这里看情况加锁
pf = t->fp;
arg = t->arg;
// pf是函数指针,arg等一系列参数,和Thread句柄关联的(通过map或Class封装之类的,通过句柄能查到函数指针和参数)
pf(arg, ...);
}
}
在队列结构中增加一个 函数指针 和 参数struct que
{
...
pf; //函数指针
arg; //参数
}ThreadProc (LPVOID lpParam)
{
while(1)
{
//从队列取任务
//调用任务的pf(arg, ...)
//每个任务可以指定不同的回调函数
}
}