mirror of
https://github.com/boostorg/fiber.git
synced 2026-02-20 02:32:19 +00:00
replace atomic< scheduler > by raw pointer
- to synchronize, use a fence in scheduler::detach_worker_context() and scheduler::attach_worker_context()
This commit is contained in:
@@ -386,13 +386,15 @@ 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_.load() );
|
||||
BOOST_ASSERT( nullptr == ctx->scheduler_);
|
||||
ctx->worker_link( worker_queue_);
|
||||
ctx->scheduler_ = this;
|
||||
std::atomic_thread_fence(std::memory_order_release);
|
||||
}
|
||||
|
||||
void
|
||||
scheduler::detach_worker_context( context * ctx) noexcept {
|
||||
std::atomic_thread_fence(std::memory_order_acquire);
|
||||
BOOST_ASSERT( nullptr != ctx);
|
||||
BOOST_ASSERT( ! ctx->ready_is_linked() );
|
||||
BOOST_ASSERT( ! ctx->sleep_is_linked() );
|
||||
|
||||
Reference in New Issue
Block a user