]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/30_threads/barrier/completion.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 30_threads / barrier / completion.cc
CommitLineData
b7c3f201
TR
1// { dg-options "-std=gnu++2a" }
2// { dg-do run { target c++2a } }
3// { dg-require-gthreads "" }
4// { dg-additional-options "-pthread" { target pthread } }
71dc5ae5 5// { dg-add-options libatomic }
b7c3f201 6
83ffe9cd 7// Copyright (C) 2020-2023 Free Software Foundation, Inc.
b7c3f201
TR
8//
9// This file is part of the GNU ISO C++ Library. This library is free
10// software; you can redistribute it and/or modify it under the
11// terms of the GNU General Public License as published by the
12// Free Software Foundation; either version 3, or (at your option)
13// any later version.
14
15// This library is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19
20// You should have received a copy of the GNU General Public License along
21// with this library; see the file COPYING3. If not see
22// <http://www.gnu.org/licenses/>.
23
24// This test is based on libcxx/test/std/thread/thread.barrier/completion.pass.cpp
25//===----------------------------------------------------------------------===//
26//
27// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
28// See https://llvm.org/LICENSE.txt for license information.
29// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
30//
31//===----------------------------------------------------------------------===//
32
33#include <barrier>
34#include <thread>
35
36#include <testsuite_hooks.h>
37
38int main(int, char**)
39{
40 int x = 0;
41 auto comp = [&] { x += 1; };
42 std::barrier<decltype(comp)> b(2, comp);
43
44 std::thread t([&](){
45 for(int i = 0; i < 10; ++i)
46 b.arrive_and_wait();
47 });
48
49 for(int i = 0; i < 10; ++i)
50 b.arrive_and_wait();
51
52 VERIFY( x == 10 );
53 t.join();
54}