Если std::mutex::try_lock завершился неудачей, можно ли считать, что поток получил актуальное состояние защищаемых данных?
База Hintsage
Многопоточность
Потоки, синхронизация, атомики и модель памяти C++.
Практика
Вопросы: Многопоточность
В чём принципиальное различие между std::atomic_signal_fence и std::atomic_thread_fence при обмене данными между потоками?
Какую роль играет один и тот же мьютекс при изменении предиката и ожидании на std::condition_variable?
За счёт чего std::scoped_lock предотвращает взаимную блокировку при захвате нескольких мьютексов?
Как следует рассуждать о переходе от совместной блокировки std::shared_mutex к исключительной, если условие проверено под shared lock?
Определите последствие исключения, покинувшего функцию потока, и способ безопасно обработать его. Код должен завершиться без аварийного завершения процесса.
#include <stdexcept>
#include <thread>
void worker() {
throw std::runtime_error("ошибка");
}
int main() {
std::thread t(worker);
t.join();
}
Вызов std::async выполнен без указания политики запуска. Какую гарантию о параллельном выполнении даёт такой код?
#include <chrono>
#include <future>
#include <thread>
int work() {
std::this_thread::sleep_for(std::chrono::milliseconds{10});
return 42;
}
int main() {
auto result = std::async(work);
result.wait();
}
В каких пределах std::latch синхронизирует данные между участниками после завершения ожидания?
Достаточно ли вызова notify_one на атомарной переменной, чтобы другой поток увидел обычные данные, записанные до уведомления?
Ручной захват мьютекса прерван исключением до вызова unlock — как это скажется на следующем захвате?
Показано 41–50 из 50