История изменений
Исправление anonymous2, (текущая версия) :
Можно подробнее?
допустим так
namespace
{
std::mutex lock;
std::condition_variable cv;
std::thread_id thid;
std::atomic<bool> shutdown{false};
void threadWait(void)
{
std::unique_lock<std::mutex> lk(lock);
cv.wait(lk, [&] { return std::this_thread::get_id() == thid || shutdown; });
}
void threadAllow(const std::thread_id & id)
{
std::lock_guard<std::mutex> lk(lock);
thid = id;
cv.notify_all();
}
}
Исправление anonymous2, :
Можно подробнее?
допустим так
namespace ThreadOrder
{
std::mutex lock;
std::condition_variable cv;
std::thread_id thid;
std::atomic<bool> shutdown{false};
void threadWait(void)
{
std::unique_lock<std::mutex> lk(lock);
cv.wait(lk, [&] { return std::this_thread::get_id() == thid || shutdown; });
}
void threadAllow(const std::thread_id & id)
{
std::lock_guard<std::mutex> lk(lock);
thid = id;
cv.notify_all();
}
}
Исходная версия anonymous2, :
Можно подробнее?
допустим так
namespace ThreadOrder
{
std::mutex lock;
std::condition_variable cv;
std::thread_id thid;
std::atomic<bool> shutdown{false};
void threadWait(void)
{
std::unique_lock<std::mutex> lk(lock);
cv.wait( lk, [&] { return std::this_thread::get_id() == thid || shutdown} );
}
void threadAllow(const std::thread_id & id)
{
std::lock_guard<std::mutex> lk(lock);
thid = id;
cv.notify_all();
}
}