VS2010环境的OpenMP的并行循环的输出问题

flyingba 2016-09-30 11:57:16
请教各位大牛,在VS2010中的MFC Application - Dialog based的程序,在对话框中设置了一个EDIT控件、一个BUTTON控件,

EDIT控件关联了变量名为m_editOutput。

下面的程序,输出for循环的循环变量i到EDIT控件中,在串行计算时能够正常运行:

void CTestDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here

CString strOutput;

for (int i=0;i<100;i++)
{
strOutput.Format(_T("i=%d"),i);
m_editOutput.SetWindowText(strOutput);
}


但是,如果在for语句前加上OpenMP的并行开关语句,同时设置好OpenMP的环境,成为如下:
void CTestDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here

CString strOutput;

#pragma omp parallel for
for (int i=0;i<100;i++)
{
strOutput.Format(_T("i=%d"),i);
m_editOutput.SetWindowText(strOutput);
}

则程序运行时死机了,就是闷死在那里了。

请教各位大牛,是什么原因?应该如何修改?

谢谢。
...全文
276 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingba 2016-09-30
  • 打赏
  • 举报
回复
请教版主: 那有没有什么办法输出OpenMP中的并行for循环的循环变量呢?
三岁、就很帅 2016-09-30
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
你这个是等于并行多个线程调用控件输出了,MFC控件不支持多线程,只能在UI主线程操作。所以不适合用OpenMP
学习了
oyljerry 2016-09-30
  • 打赏
  • 举报
回复
你这个是等于并行多个线程调用控件输出了,MFC控件不支持多线程,只能在UI主线程操作。所以不适合用OpenMP

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧