gpt4 book ai didi

android - 多核处理器的多线程

转载 作者:太空狗 更新时间:2023-10-29 12:47:34 25 4
gpt4 key购买 nike

我有三星 Galaxy S3,它使用自己的 Exynos 4 Quad 处理器。所以我想优化我的应用程序,使其可以使用所有 4 个处理器内核。

所以我做了一些测试:

  1. 在一个线程中运行任务。处理时间 - 8 秒。

  2. 在四个线程中运行任务。处理时间 - 仍然是 8 秒。

     new Thread() {
    public void run() {
    // do 1/4 of task
    }
    }.start();

    new Thread() {
    public void run() {
    // do 1/4 of task
    }
    }.start();

    new Thread() {
    public void run() {
    // do 1/4 of task
    }
    }.start();

    new Thread() {
    public void run() {
    // do 1/4 of task
    }
    }.start();
  3. 在 ExecutorService 中运行任务。处理时间 - 仍然是 8 秒。

    ExecutorService threadPool = null;
    threadPool = Executors.newFixedThreadPool(4);

    threadPool.execute(new Runnable() {
    @Override
    public void run() {
    // do 1/4 of task
    }});
    threadPool.execute(new Runnable() {
    @Override
    public void run() {
    // do 1/4 of task
    }});
    threadPool.execute(new Runnable() {
    @Override
    public void run() {
    // do 1/4 of task
    }});
    threadPool.execute(new Runnable() {
    @Override
    public void run() {
    // do 1/4 of task
    }});

看起来所有工作都是同步完成的。为什么它不并联?

最佳答案

您可以用 C 或 Java 尝试我的测试:

http://bigflake.com/cpu-spinner.c.txt
http://bigflake.com/MultiCore.java.txt

当 MultiCore.java 在 Nexus 4 上运行时,我看到:

Thread 1 finished in 1516ms (1267234688)
Thread 3 finished in 1494ms (1519485328)
Thread 0 finished in 1530ms (51099776)
Thread 2 finished in 1543ms (-1106614992)
All threads finished in 1550ms

更新:使用 systrace 观看测试很有用。作为回答类似 question 的一部分我设置了一个页面 shows the systrace output对于这个测试。您可以看到线程是如何安排的,并观察其他两个内核的旋转。

关于android - 多核处理器的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16304005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com