1 // { dg-do run }
2 // { dg-options "-pthread"  }
3 // { dg-require-effective-target c++11 }
4 // { dg-require-effective-target pthread }
5 // { dg-require-gthreads "" }
6 
7 // Copyright (C) 2015-2019 Free Software Foundation, Inc.
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 #include <mutex>
25 #include <thread>
26 
27 using mutex_type = std::recursive_timed_mutex;
28 
29 mutex_type m;
30 
f()31 void f()
32 {
33   std::lock_guard<mutex_type> l(m);
34 }
35 
main()36 int main()
37 {
38   std::thread t1(f);
39   std::thread t2(f);
40   t1.join();
41   t2.join();
42 }
43