草庐IT

AfxBeginThread

全部标签

windows - 等待 AfxBeginThread/CWinThread 消息泵激活?

我正在调用AfxBeginThread并使用CWinThread在我的MFC应用程序中启动一个UI线程。我注意到,如果我的主线程在CWinThread::InitInstance()函数返回之前尝试将PostThreadMessage()发送到我的新线程,那么PostThreadMessage()将返回错误:无效的线程句柄。我的猜测是新线程上的消息泵直到InitInstance返回后才设置。我看到的AfxBeginThread示例代码和我读过的文档并没有很好地解释这种行为,也没有显示等待线程初始化的模式。在InitInstance返回并且线程的消息泵准备好接收消息之前阻塞主线程的最佳方

c++ - 用类成员函数调用AfxBeginThread?

如何使用任意非静态类方法调用AfxBeginThread?也许我可以用boostbind做些什么?以下是Microsoft的预期用法(并且是调用非静态方法的示例,但它是硬编码的方法):UINTMyThreadProc(LPVOIDpParam){CMyObject*pObject=(CMyObject*)pParam;if(pObject==NULL||!pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))return1;//ifpObjectisnotvalid//dosomethingwith'pObject'return0;//threadco

c++ - 将 boost::mutex 与 MFC 线程 (AfxBeginThread) 一起使用?

当您不使用boost::thread而是通过AfxBeginThread使用MFC线程功能时,您能否使用boost::mutex库来保护代码的关键部分?如果是这样,这样做有什么问题吗? 最佳答案 一个(真实的)线程是一个(真实的)线程。Boost对线程是直接创建(WindowsAPI)还是通过Boost创建没有特殊假设。简答:没问题。 关于c++-将boost::mutex与MFC线程(AfxBeginThread)一起使用?,我们在StackOverflow上找到一个类似的问题:

c++ - AfxBeginThread 有很多开销吗?

AfxBeginThread做这件事时有多少开销?我有一个令人尴尬的并行项目,我想用AfxBeginThread启动4-15个线程的批处理,等待每个线程自然完成,比较结果,然后重复无数次。让我担心的是,每个工作线程将完成的工作少于一秒,可能是1/50秒或更少,坦率地说,我不知道有多少个周期进入了巫毒AfxBeginThreaddoes注册新线程,设置它,进入它并在函数结束时自然退出。有什么想法吗? 最佳答案 作为一般原则,您可能希望避免一直启动和停止线程。创建工作线程一次,然后向它们提供无数次数据。这样您就不必担心线程创建和销毁的开

c++ - CWinThread 被 AfxBeginThread 创建后谁拥有它?

我正在使用AfxBeginThread启动一个线程。这将返回一个指向新的CWinThread对象的指针。MSDN声明此指针为NULL,如果线程创建失败,它将释放所有内容。但是,一旦线程在定期启动后退出,CWinThread对象仍然存在。我不确定我是否应该删除CWinThread对象,或者这是否由MFC本身完成(尽管看起来并非如此)。仅供引用,线程不太可能退出,因为它应该一直运行到应用程序结束。但是,因为我将它用作线程池的一部分,所以我不希望CWinThread永远挂起。 最佳答案 清理CWinThread对象的责任取决于它的m_bA

AfxBeginThread线程函数的使用(MFC)

在MFC中,开启线程函数推荐使用AfxBeginThread函数,返回的是CWinThread类,可以响应消息函数原型//省略写法,详情可到文章末尾访问MSDN查看CWinThread*AFXAPIAfxBeginThread(线程函数,参数指针);使用方法//若线程函数需要被子类调用,需在父类头文件中添加externUINTThreadFun(LPVOIDpParam);//cpp中定义,在类外面UINTThreadFun(LPVOIDpParam){//代码return0;}//执行线程函数AfxBeginThread(ThreadFun,NULL);要点说明线程函数在接受的参数需要进行类