积极答复者
VS2010 C++/CLI 并行编程问题?

问题
-
编程环境: VS2010 简体中文旗舰版( .net 4.0 版本 )
编程语言:C++/CLI
硬件环境: Intel 双核四线程[cpu]
背景介绍:
本人创建了一个控制台程序,希望使用 C++/CLI 编写一个并行( 多核并行 )的测试程序,程序功能是并行四条线程,每条线程运行一千次,并在控制台上打印出当前时间和运行次数。
下面将采用四种方法来实现并行,参考网上文章地址: http://hi.baidu.com/meback/item/d7b4762b4b79a8ceddf69a7d
代码部分:
① 引入命名空间:
using namespace System;
using namespace System::Threading:
using namespace System:Threading::Tasks;
① 新建一个类 A, 在类 A 中建立一个函数 printMessage(),用于在控制台上打印信息;
② 方法一:使用 System::Action;
答案
-
Hi,
很不幸,目前情况下,lambda最终被编译器解释为一个对象实例,它不代表指针,凡是需要用到函数指针的地方都不能使用lambda。对象实例是无法转换成一个函数指针的!因此,lambda无论如何都无法传递给委托的构造函数。
Fred Bao
MSDN Community Support | Feedback to us
Develop and promote your apps in Windows Store
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- 已建议为答案 Fred BaoModerator 2013年8月22日 9:59
- 已标记为答案 Fred BaoModerator 2013年10月22日 3:10
-
个人建议你使用非托管C++,然后采用 AMP 来编写并行程序。
- 已建议为答案 Fred BaoModerator 2013年8月22日 9:59
- 已标记为答案 Fred BaoModerator 2013年10月22日 3:10
全部回复
-
问题一:
不知道 C++/CLI 支不支持并行编程 TPL( Task Parallel Library )?
分析以上错误,似乎只要是使用了 lambda 表达式的,编译器都提示有简单的语法错误,似乎 C++/CLI 不支持使lambda 表达式。本人仔细对比了方法三和以下代码(以下代码使用 C# 实现,本人亲测,可以编译且运行成功),由于 C# 和 C++/CLI 的语法即为相近,所以本人推测,不太可能是 C++/CLI 不支持 lambda 表达式?下面将以图片的形式详细讲述 C# 代码,以方便高人指点。
- 已建议为答案 Fred BaoModerator 2013年8月15日 9:22
- 取消建议作为答案 Fred BaoModerator 2013年8月15日 9:22
-
问题2:求一份使用 C++/CLI 实现多核并行的代码,其使用到了 lambda 表达式,最好有与程序界面通信的功能。
我从 http://code.msdn.microsoft.com/ParExtSamples 上下载了一套多核的示例代码,可惜只提供了 C# 和 VB.net 的实现方式。
-
Hi,
很不幸,目前情况下,lambda最终被编译器解释为一个对象实例,它不代表指针,凡是需要用到函数指针的地方都不能使用lambda。对象实例是无法转换成一个函数指针的!因此,lambda无论如何都无法传递给委托的构造函数。
Fred Bao
MSDN Community Support | Feedback to us
Develop and promote your apps in Windows Store
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- 已建议为答案 Fred BaoModerator 2013年8月22日 9:59
- 已标记为答案 Fred BaoModerator 2013年10月22日 3:10
-
个人建议你使用非托管C++,然后采用 AMP 来编写并行程序。
- 已建议为答案 Fred BaoModerator 2013年8月22日 9:59
- 已标记为答案 Fred BaoModerator 2013年10月22日 3:10