pthread: Fix race conditions in existing pthread UTs

pull/6904/head
Angus Gratton 2021-06-16 10:43:21 +10:00 zatwierdzone przez bot
rodzic 262107691a
commit c685ef303b
2 zmienionych plików z 11 dodań i 8 usunięć

Wyświetl plik

@ -12,6 +12,7 @@ static void *compute_square(void *arg)
{
int *num = (int *) arg;
*num = (*num) * (*num);
vTaskDelay(2); // ensure the test task has time to continue execution
pthread_exit((void *) num);
return NULL;
}

Wyświetl plik

@ -80,14 +80,16 @@ TEST_CASE("pthread C++", "[pthread]")
std::thread t3(thread_main);
std::thread t4(thread_main);
if (t3.joinable()) {
std::cout << "Join thread " << std::hex << t3.get_id() << std::endl;
t3.join();
}
if (t4.joinable()) {
std::cout << "Join thread " << std::hex << t4.get_id() << std::endl;
t4.join();
}
TEST_ASSERT(t3.joinable());
TEST_ASSERT(t4.joinable());
std::cout << "Join thread " << std::hex << t3.get_id() << std::endl;
t3.join();
std::cout << "Join thread " << std::hex << t4.get_id() << std::endl;
t4.join();
// we don't know if/when t2 has finished, so delay another 2s before
// deleting the common mutexes
std::this_thread::sleep_for(std::chrono::seconds(2));
global_sp_mtx.reset(); // avoid reported leak
global_sp_recur_mtx.reset();