test_barrier.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 67 行

CPP
67
字号
// Copyright (C) 2001-2003// William E. Kempf////  Distributed under the Boost Software License, Version 1.0. (See accompanying //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#include <boost/thread/detail/config.hpp>#include <boost/thread/thread.hpp>#include <boost/thread/barrier.hpp>#include <boost/test/unit_test.hpp>#include <vector>namespace {// Shared variables for generation barrier testconst int N_THREADS=10;boost::barrier gen_barrier(N_THREADS);boost::mutex mutex;long global_parameter;void barrier_thread(){    for (int i = 0; i < 5; ++i)    {        if (gen_barrier.wait())        {            boost::mutex::scoped_lock lock(mutex);            global_parameter++;        }    }}} // namespacevoid test_barrier(){    boost::thread_group g;    global_parameter = 0;    try    {        for (int i = 0; i < N_THREADS; ++i)            g.create_thread(&barrier_thread);        g.join_all();    }    catch(...)    {        g.interrupt_all();        g.join_all();        throw;    }        BOOST_CHECK_EQUAL(global_parameter,5);}boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[]){    boost::unit_test_framework::test_suite* test =        BOOST_TEST_SUITE("Boost.Threads: barrier test suite");    test->add(BOOST_TEST_CASE(&test_barrier));    return test;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?