Edit

kc3-lang/angle/src/libANGLE/WorkerThread_unittest.cpp

Branch :

  • Show log

    Commit

  • Author : jchen10
    Date : 2019-02-15 21:06:42
    Hash : 7d53c60b
    Message : ParallelCompile: use the native extensions This enhances to use the native parallel compile extensions if available. Bug: 873724 Change-Id: I0aaed314accd75e1bfa596b322225b56d729d3a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1475234 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/WorkerThread_unittest.cpp
  • //
    // Copyright 2016 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    // WorkerThread_unittest:
    //   Simple tests for the worker thread class.
    
    #include <gtest/gtest.h>
    #include <array>
    
    #include "libANGLE/WorkerThread.h"
    
    using namespace angle;
    
    namespace
    {
    
    // Tests simple worker pool application.
    TEST(WorkerPoolTest, SimpleTask)
    {
        class TestTask : public Closure
        {
          public:
            void operator()() override { fired = true; }
    
            bool fired = false;
        };
    
        std::array<std::shared_ptr<WorkerThreadPool>, 2> pools = {
            {WorkerThreadPool::Create(false), WorkerThreadPool::Create(true)}};
        for (auto &pool : pools)
        {
            std::array<std::shared_ptr<TestTask>, 4> tasks = {
                {std::make_shared<TestTask>(), std::make_shared<TestTask>(),
                 std::make_shared<TestTask>(), std::make_shared<TestTask>()}};
            std::array<std::shared_ptr<WaitableEvent>, 4> waitables = {
                {WorkerThreadPool::PostWorkerTask(pool, tasks[0]),
                 WorkerThreadPool::PostWorkerTask(pool, tasks[1]),
                 WorkerThreadPool::PostWorkerTask(pool, tasks[2]),
                 WorkerThreadPool::PostWorkerTask(pool, tasks[3])}};
    
            WaitableEvent::WaitMany(&waitables);
    
            for (const auto &task : tasks)
            {
                EXPECT_TRUE(task->fired);
            }
        }
    }
    
    }  // anonymous namespace