VS2010环境的OpenMP的并行循环的输出问题
请教各位大牛,在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);
}
则程序运行时死机了,就是闷死在那里了。
请教各位大牛,是什么原因?应该如何修改?
谢谢。
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);
}
则程序运行时死机了,就是闷死在那里了。
请教各位大牛,是什么原因?应该如何修改?
谢谢。
...全文
相关推荐
test_OpenMP.rar_Openmp VS2010_openmp_openmp c#_并行程序 OpenMP
在visual Studio 2010 C++下,利用OpenMP编写并行程序。
OpenMp并行编程技术
OpenMp并行编程技术是并行编程技术中比较容易学的一种,相对MPI来说非常简单,但是效果却也是非常的理想。欢迎下载
OpenMP的运行环境
OpenMP的运行环境 自己从网上搜罗的,希望大家有用 应该有用!!!
openmptest.zip,VS2019使用OpenMP案例
openmptest.zip,OpenMP案例 使用软件:VS2019; 测试功能:使用OpenMP并行加速,实现计算圆周率的功能; 程序内容:比较两种使用OpenMP并行加速循环的方法: 方法1:使用的是手动分配循环迭代给每个线程,手动控制部分和全局求和,使用临界区避免数据竞争: pragma omp critical; 方法2:使用OpenMP内置的 for reduction 机制自动分配迭代并处理归约:pragma omp for reduction(+:sum),代码更加简洁和高效。
vs2010+x264(成功编译)
最新版支持VC++的x264平台,已经解决所有BUGs的源码,VS2010+X264。


进程/线程/DLL
