mirror of
https://github.com/boostorg/fiber.git
synced 2026-02-20 02:32:19 +00:00
fix comparasion of atomics for MSVC
This commit is contained in:
@@ -371,7 +371,7 @@ context::set_terminated() noexcept {
|
||||
|
||||
bool
|
||||
context::wait_until( std::chrono::steady_clock::time_point const& tp) noexcept {
|
||||
BOOST_ASSERT( nullptr != scheduler_);
|
||||
BOOST_ASSERT( nullptr != scheduler_.load() );
|
||||
BOOST_ASSERT( this == active_);
|
||||
return scheduler_.load()->wait_until( this, tp);
|
||||
}
|
||||
@@ -379,21 +379,21 @@ context::wait_until( std::chrono::steady_clock::time_point const& tp) noexcept {
|
||||
bool
|
||||
context::wait_until( std::chrono::steady_clock::time_point const& tp,
|
||||
detail::spinlock_lock & lk) noexcept {
|
||||
BOOST_ASSERT( nullptr != scheduler_);
|
||||
BOOST_ASSERT( nullptr != scheduler_.load() );
|
||||
BOOST_ASSERT( this == active_);
|
||||
return scheduler_.load()->wait_until( this, tp, lk);
|
||||
}
|
||||
|
||||
void
|
||||
context::set_ready( context * ctx) noexcept {
|
||||
BOOST_ASSERT( nullptr != ctx);
|
||||
//BOOST_ASSERT( nullptr != ctx);
|
||||
BOOST_ASSERT( this != ctx);
|
||||
BOOST_ASSERT( nullptr != scheduler_);
|
||||
BOOST_ASSERT( nullptr != ctx->scheduler_);
|
||||
BOOST_ASSERT( nullptr != scheduler_.load() );
|
||||
BOOST_ASSERT( nullptr != ctx->scheduler_.load() );
|
||||
// FIXME: comparing scheduler address' must be synchronized?
|
||||
// what if ctx is migrated between threads
|
||||
// (other scheduler assigned)
|
||||
if ( scheduler_ == ctx->scheduler_) {
|
||||
if ( scheduler_.load() == ctx->scheduler_.load() ) {
|
||||
// local
|
||||
scheduler_.load()->set_ready( ctx);
|
||||
} else {
|
||||
|
||||
@@ -386,7 +386,7 @@ scheduler::attach_worker_context( context * ctx) noexcept {
|
||||
BOOST_ASSERT( ! ctx->terminated_is_linked() );
|
||||
BOOST_ASSERT( ! ctx->wait_is_linked() );
|
||||
BOOST_ASSERT( ! ctx->worker_is_linked() );
|
||||
BOOST_ASSERT( nullptr == ctx->scheduler_);
|
||||
BOOST_ASSERT( nullptr == ctx->scheduler_.load() );
|
||||
ctx->worker_link( worker_queue_);
|
||||
ctx->scheduler_ = this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user