@@ -372,8 +372,7 @@ namespace NActors {
372
372
373
373
void TActorSystem::Start () {
374
374
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Start" );
375
- Y_ABORT_UNLESS (StartExecuted == false );
376
- StartExecuted = true ;
375
+ Y_ABORT_UNLESS (!StartExecuted.exchange (true ));
377
376
378
377
ScheduleQueue.Reset (new NSchedulerQueue::TQueueType ());
379
378
TVector<NSchedulerQueue::TReader*> scheduleReaders;
@@ -418,13 +417,11 @@ namespace NActors {
418
417
419
418
void TActorSystem::Stop () {
420
419
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Stop" );
421
- if (StopExecuted || !StartExecuted ) {
420
+ if (!StartExecuted. load () || StopExecuted. exchange ( true ) ) {
422
421
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Stop: already stopped" );
423
422
return ;
424
423
}
425
424
426
- StopExecuted = true ;
427
-
428
425
for (auto && fn : std::exchange (DeferredPreStop, {})) {
429
426
fn ();
430
427
}
@@ -439,11 +436,10 @@ namespace NActors {
439
436
void TActorSystem::Cleanup () {
440
437
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Cleanup" );
441
438
Stop ();
442
- if (CleanupExecuted || !StartExecuted ) {
439
+ if (!StartExecuted. load () || CleanupExecuted. exchange ( true ) ) {
443
440
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Cleanup: already cleaned up" );
444
441
return ;
445
442
}
446
- CleanupExecuted = true ;
447
443
CpuManager->Cleanup ();
448
444
Scheduler.Destroy ();
449
445
ACTORLIB_DEBUG (EDebugLevel::ActorSystem, " TActorSystem::Cleanup: cleaned up" );
0 commit comments