none
VS2010 C++/CLI 并行编程问题? RRS feed

  • 问题

  • 编程环境: 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

    2013年7月31日 12:40

答案

全部回复

  • ③  方法二:使用匿名委托;

    2013年7月31日 12:43
  •        ④ 方法三:使用 lambda 表达式和匿名方法; 

    2013年7月31日 12:45
  • ⑤ 方法四:使用匿名表达式和匿名方法;

    2013年7月31日 12:47
  • 问题一:

    不知道 C++/CLI 支不支持并行编程 TPL Task  Parallel  Library )?

                    分析以上错误,似乎只要是使用了 lambda 表达式的,编译器都提示有简单的语法错误,似乎 C++/CLI 不支持使lambda 表达式。本人仔细对比了方法三和以下代码(以下代码使用 C# 实现,本人亲测,可以编译且运行成功),由于 C# C++/CLI 的语法即为相近,所以本人推测,不太可能是 C++/CLI 不支持 lambda 表达式?下面将以图片的形式详细讲述 C# 代码,以方便高人指点。

    2013年7月31日 12:49
  • 问题2:求一份使用 C++/CLI 实现多核并行的代码,其使用到了 lambda 表达式,最好有与程序界面通信的功能。

            我从 http://code.msdn.microsoft.com/ParExtSamples 上下载了一套多核的示例代码,可惜只提供了 C# VB.net 的实现方式。

    2013年7月31日 12:49
  • 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.

    2013年8月15日 9:30
    版主
  • 个人建议你使用非托管C++,然后采用 AMP 来编写并行程序。
    2013年8月15日 9:44