libstdc++: testsuite: tolerate non-cancelling sleep
Though sleep, nanosleep and clock_nanosleep are all POSIX cancellation points, not all target systems follow this POSIX requirement. 30_threads/thread/native_handle/cancel.cc will run until it times out on such systems. Rather than failing a C++ library test because of a limitation of the target system, this patch gives the test a chance to successfully exercise the features it intends to exercise, by introducing a cancellation point in a loop that would otherwise run indefinitely on systems exhibiting this limitation. for libstdc++-v3/ChangeLog * testsuite/30_threads/thread/native_handle/cancel.cc: Add an explicit cancellation point in case sleep_for lacks one.
This commit is contained in:
parent
a5bba80e32
commit
0b2c1781db
@ -30,7 +30,11 @@ void f(std::atomic<bool>& started)
|
||||
{
|
||||
started = true;
|
||||
while (true)
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
// In case the target system doesn't make sleep a cancellation point...
|
||||
pthread_testcancel();
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
|
Loading…
Reference in New Issue
Block a user