您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 我要用MFC做一个多线程的系统

我要用MFC做一个多线程的系统

来源:网络整理     时间:2016/8/15 21:32:37     关键词:

关于网友提出的“ 我要用MFC做一个多线程的系统”问题疑问,本网通过在网上对“ 我要用MFC做一个多线程的系统”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 我要用MFC做一个多线程的系统
描述:

我要做MFC的多线程编程,但我没有做过多线程编程的。
以前用的都不是多线程的。请教各位高手谁有相关的代码提供一下吗?


解决方案1:

引用 4 楼 wltg2001 的回复:
MFC做的话,尽量不要作CreateThread,而是用_beginthread之类的函数,另外,很多MFC类并不是线程安全的,所以最好不要将这些类对象的指针传给线程,而尽量用句柄等安全的。

up 解决方案2:

去VC知识库上看看
http://www.vckbase.com/document/viewdoc/?id=1704
http://www.vckbase.com/document/viewdoc/?id=1706

解决方案3:

::AfxBeginThread((::AFX_THREADPROC)函数名,(LPVOID)参数指针)
如果是调用普通函数例如
void a123()
{cout<<"我好靓仔,上班偷赖,帮公司发发广告冲冲IP:www.173eg.com";}
void abc(int i)
{a123();}
那么就是这样用
int ii=10;
::AfxBeginThread((::AFX_THREADPROC)abc,(LPVOID)&ii);
如果函数在类里面例如
class ABC
{
   ...
   void a123(){cout<<"我好靓仔,上班偷赖,帮公司发发广告冲冲IP:www.173eg.com";}
   static void abc(LPVOID*pp);
   void b123();
}
那么就是这样用
void abc(LPVOID*pp)
{
ABC*p=(ABC*)pp;
p->a123();
}
void  ABC::b123()
{
 AfxBeginThread((::AFX_THREADPROC)abc,(LPVOID)this);
}
上班偷赖,帮公司发发广告冲冲IP:www.173eg.com

解决方案4:

引用 5 楼 hellward 的回复:
去VC知识库上看看
http://www.vckbase.com/document/viewdoc/?id=1704
http://www.vckbase.com/document/viewdoc/?id=1706

UP 解决方案5:

MFC做的话,尽量不要作CreateThread,而是用_beginthread之类的函数,另外,很多MFC类并不是线程安全的,所以最好不要将这些类对象的指针传给线程,而尽量用句柄等安全的。

解决方案6:

多线程需要注意的就是同步问题,可以使用临界区(CCriticalSection),事件对象(CEvent),互斥对象(CMutex)等解决
创建线程可以使用CreateThread,AfxBeginThread
或用SDK的_beginthread,_beginthreadex等,MSDN有详细的解释及例子可供参考


以上介绍了“ 我要用MFC做一个多线程的系统”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3308833.html

相关图片

相关文章