代码之家  ›  专栏  ›  技术社区  ›  Nope

多核编程:需要做什么?

  •  15
  • Nope  · 技术社区  · 16 年前

    谢谢你的帮助。

    15 回复  |  直到 16 年前
        1
  •  17
  •   Alex Martelli    16 年前

    许多 here !

        2
  •  6
  •   DigitalRoss    16 年前

    你想要线程和演员

    说得好。..除非你知道一些关键字,否则你无法在谷歌上搜索它。

    C POSIX线程 ,Posix Thread的缩写,尽管win32本机接口不是Posix,请参阅 Creating Threads on MSDN .

    Java See class Thread

    最后,您应该阅读一些关于函数式编程、参与者并发性和不可变对象的知识。事实证明,在普通的旧共享内存中管理并发性是相当困难的,但消息传递和函数式编程可以让你使用本质上更安全的风格,避免并发问题。Java确实允许你以困难的方式完成所有事情,其中数据是可变的共享内存,你拼命地试图手动联锁共享状态结构。但您也可以在java中使用高级样式。也许从这篇JavaWorld文章开始: Actors on the JVM .

        4
  •  3
  •   Anon    16 年前

    video site ,右上角有其他一些关于Clojure的优秀视频的链接。

        5
  •  3
  •   Dirk is no longer here    16 年前

    这取决于你喜欢用什么语言来完成工作。

    MPI R 或者你喜欢的任何东西。 DeinoMPI 似乎在Windows上很受欢迎,以及 OpenMPI

        6
  •  2
  •   Michael Dillon    16 年前

    很多人都在谈论线程,这是一种方法,但考虑另一种方法。如果你启动了几个JVM,连接到网络,并等待工作的到来,该怎么办?您将如何对应用程序进行编程,以便它可以在不知道它们是否在同一CPU上的情况下利用所有这些JVM?

    在四核机器上,你应该能够运行12个或更多JVM来处理工作。如果你从这个角度来解决这个问题,扩展到多台计算机是相当简单的,尽管当你的通信是在真实的网络上时,你确实必须考虑更高的网络延迟。

        7
  •  2
  •   Joe Internet    16 年前
        8
  •  1
  •   Jerry Coffin    16 年前

    您需要创建多线程程序。Java支持开箱即用的多线程(尽管较旧的JVM在一个核心上运行所有线程)。对于C,您需要使用特定于平台的代码来创建和操作线程(Linux的pthread*,Windows的CreateThread和company)。或者,您可能希望从C++进行线程处理,因为C++中有相当多的库(例如Boost::threads),使生活更简单,并允许移植代码。

    如果你希望代码可以在具有多个内核和集群的单台机器上移植,你可以考虑MPI。它确实是为集群情况而设计的,但已被移植到具有多个处理器或多个内核的单台机器上工作——尽管它不如专门为单台机器编写的代码高效。

        9
  •  1
  •   BobbyShaftoe    16 年前

    所以,这是一个非常广泛的问题。您可以尝试使用许多不同的编程语言(包括C或Java)进行多线程编程。如果你想让我给你选一个,我会选C.:)

    此外,OpenMP可用于Windows,并提供了一个截然不同的多线程编程视图。

        10
  •  1
  •   Paul    16 年前

    (需要注意的是:还有其他语言设计用于在高度并行的环境中运行,如Haskell。Erlang只是比Haskell等更注重理论的语言更实用)

        11
  •  1
  •   Danny Varod    16 年前

        12
  •  0
  •   Mandrake    16 年前

    是的,有很多线程,但如果线程访问内存中的同一位置,则只有一个线程会执行,

    我们需要多个内存核

        13
  •  0
  •   J D    16 年前

    Here

    .NET 4为并行编程提供了许多新的基础架构,而且非常易于使用。

        14
  •  0
  •   Olof Forshell    15 年前

    对于Windows NT引擎(NT4、2000、XP、Vista和7),您应该研究的机制是线程、关键部分和I/O完成端口(iocp)。线程很好,但你需要能够在它们之间以及与I/O同步,这就是cs和iocp发挥作用的地方。为了确保你从代码中获得每一点性能,你需要分析、实验/重建。很有趣,但很耗时。

        15
  •  0
  •   Community Mohan Dere    9 年前
    推荐文章