Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
R
riscv-gcc-1
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • lvzhengyang
  • riscv-gcc-1
  • Repository

Switch branch/tag
  • riscv-gcc-1
  • libstdc++-v3
  • testsuite
  • 30_threads
  • condition_variable
  • members
  • 2.cc
Find file
BlameHistoryPermalink
  • Jonathan Wakely's avatar
    libstdc++: Define and use chrono::is_clock for C++20 · bf1fc37b
    For C++20 the wait_until members of mutexes and condition variables are
    required to be ill-formed if given a clock that doesn't meet the
    requirements for a clock type. To implement that requirement this patch
    adds static assertions using the chrono::is_clock trait, and defines
    that trait.
    
    To avoid expensive checks for the common cases, the trait (and
    associated variable template) are explicitly specialized for the
    standard clock types.
    
    This also moves the filesystem::__file_clock type from <filesystem> to
    <chrono>, so that chrono::file_clock and chrono::file_time can be
    defined in <chrono> as required.
    
    	* include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
    	* include/std/chrono (filesystem::__file_clock): Here.
    	(filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
    	Define public member functions for C++20.
    	(is_clock, is_clock_v): Define traits for C++20.
    	* include/std/condition_variable (condition_variable::wait_until): Add
    	check for valid clock.
    	* include/std/future (_State_baseV2::wait_until): Likewise.
    	* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
    	* include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
    	Likewise.
    	* include/std/thread (this_thread::sleep_until): Likewise.
    	* testsuite/30_threads/condition_variable/members/2.cc: Qualify
    	slow_clock with new namespace.
    	* testsuite/30_threads/condition_variable/members/clock_neg.cc: New
    	test.
    	* testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
    	New test.
    	* testsuite/30_threads/future/members/clock_neg.cc: New test.
    	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
    	Qualify slow_clock with new namespace.
    	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/
    	clock_neg.cc: New test.
    	* testsuite/30_threads/shared_future/members/clock_neg.cc: New
    	test.
    	* testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
    	* testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
    	New test.
    	* testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
    	slow_clock with new namespace.
    	* testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
    	* testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
    	test.
    	* testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
    	* testsuite/std/time/traits/is_clock.cc: New test.
    	* testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
    	namespace.
    Jonathan Wakely committed Mar 25, 2020
    bf1fc37b
2.cc 3.68 KB
Edit