Как я могу проверить функцию синхронизации в C ++

0

У меня есть функция синхронизации, которую я хочу проверить, если она закончится. я хочу иметь возможность запускать код для X-времени, и если время заканчивается, чтобы продолжить. вот что я хочу:

bool flag = false;
some_function_that_run_the_next_block_for_x_sec()
{
   my_sync_func_that_i_want_to_test();
   flag = true;
}
Assert::IsTrue(flag);

есть ли простой способ сделать это?

SynchronizationContext

Благодарю.

Теги:
multithreading
c++11
asynchronous
synchronization

1 ответ

0
Лучший ответ

Ссылка, которую вы опубликовали, дает мне небольшое представление о том, как этот класс будет использоваться (возможно, Microsoft экономит байты на образце кода, чтобы заплатить за баллонский золотой парашют в следующем году?), Поэтому простите меня за полное игнорирование этого.

Что-то вроде этого:

auto result = async(launch::async, my_sync_func_that_i_want_to_test);
future_status status = result.wait_for(chrono::milliseconds(100));
if (status == future_status::timeout)
    cout << "Timed out" << endl;
if (status == future_status::ready)
    cout << "Finished on time" << endl;

Необходимо включить заголовки <future> и <chrono>.

Если my_sync_func_that_i_want_to_test() никогда не закончится, у вас my_sync_func_that_i_want_to_test() другая проблема. future объект (result) будет блокироваться до тех пор, пока поток, запущенный async() завершится. Нет никакого переносимого способа восстановления из "убитых/отмененных/прерванных" потоков, поэтому для этого, вероятно, потребуется некоторый код для конкретной платформы, даже если вы async_that_detaches_the_thread() свой собственный async_that_detaches_the_thread() (который нетрудно найти здесь, например, один пример).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню