mfc 多线程问题

mfc 多线程问题,第1张

在windows下做服务器最好的方案是IOCP(I/O Complete port),中文名I/O完成端口
性能很不错。涉及windows高级编程,难学指数比较高
你的的感觉很不错,这个方案不可行:
1会浪费大量CPU时间。一台计算机CPU个数有限,如果你的计算机只有2个CPU,却开了200线程。这个时候在同一时间,最多有2个线程在运行(因为你只有2个CPU),但是线程的不断切换让你感觉好像200个都在运行,只不过速度很慢。(此时线程切换会耗掉大量CPU时间,得不偿失)。
2浪费内存。线程在windows中需要用数据表示,200个线程,开销有点浪费(虽然现在内存都很大,但是我们不能浪费)
3线程同步问题会让你晕掉的,200个线程并发处理是很麻烦的,要进行线程同步,以及线程通信,同步和通信是多线程必须深思熟虑的。
4有一个很不错的解决方案---IOCP
关于IOCP的学习,网上资料很多在此不多言。
enjoy coding

AfxBeginThread(Proc1,hWnd,0)在调用之前必须先申明,你可以在它之前加这样一句话:UINT Proc1(LPVOID param);(函数体外申明)
void CChat::DoDataExchange(CDataExchange pDX)这个是作为数据映射处理的,不能将函数放在此处。你可以把前面两句放在初始化函数调用

在c++中有以下4种方法对程序进行调试方法:

1、先打开 一个 已编好 的程序 ,如下。这段代码 表示 :输入一个整数,计算他的累乘n,n 为输入的整数。

2、将鼠标光标 移到 程序开头, 单击 工具栏“Step into”图标,在行数 的右边会出现 一个 的小箭头。它表示程序 执行了 这一行代码的上一行,还未执行 当前这行。

3、继续点击 “Step into”,箭头 向下移动,代码向下一行执行。这时,执行了 一个 scanf 输入函数,在d出的 黑色对话框中 输入一个整数 ,比如 3, 再 点击 “enter”键,我们可以发现 窗口中 n 的值 变为了 3 。

4、继续点击 “Step into”,开始执行while 循环。可以发现 窗口中变量 a ,i ,的值在不断变化。当 i =4时 ,满足条件 ,退出了 循环,开始执行 printf 输出函数。

我用的BOOST库中的线程库
void CTestBoost::OnBnClickedBtntestboost()
{
// TODO: 在此添加控件通知处理程序代码
UINT length = 500;
m_wndProgressSetRange(0, length);
m_wndProgressSetStep(1);
m_wndProgressSetPos(0);
boost::thread t(boost::bind(&CTestBoost::RunTest, this, length));
tdetach();//将子线程和主线程分离,子线程执行完成后自己释放资源
}
void CTestBoost::RunTest(UINT length)
{
for(size_t i=0;i<length;i++)
{
m_wndProgressSetPos(i);
Sleep(2);
}
MessageBox(_T("完成"),_T("提示"),MB_ICONINFORMATION);
GetDlgItem(IDC_BTNTESTBOOST)->EnableWindow(TRUE);
runState=0;
}

mfc非模态对话框怎么建立多线程
1
首先建立MFC应用程序,在项目下面的资源视图中找到对话框资源,然后如下图右键,选择插入对话框
2
然后选中新插入的对话框,在软件的右边有属性对话框,点击修改我们新建对话框的ID和标题名
3
然后将新建的对话框上加一些控件如下图中所示,其它采用默认设置即可
4
选中该对话框,右击,选择添加类,类名CTipDlg,然后采用默认设置点击完成
5
在工程中会新生成一个库文件和一个CPP源文件,如下图
6
在主库文件中包含刚新建的库文件(头文件),然后声明一个析构函数
7
当按计算这个按钮时d出我们刚新建的非模态对话框,下面是在计算按钮消息下的代码,如下图中所示
8
在新建对话框新生成的CPP文件中实现我们定义的析构函数,释放模态对话框
9
上面所有完成后下面是程序的运行结果,点击计算按钮,上面是我们新建的非模态对话框
10
该非模态对话框可以拖动,模态对话框不能拖动,它d出后,本程序其他窗口仍能响应用户输入


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12605397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存