26 namespace experimental {
29 std::atomic<const std::function<std::unique_ptr<EventEngine>()>*>
30 g_event_engine_factory{
nullptr};
31 std::atomic<EventEngine*> g_event_engine{
nullptr};
36 delete g_event_engine_factory.exchange(
41 if (
auto* factory = g_event_engine_factory.load()) {
48 EventEngine* engine = g_event_engine.load(std::memory_order_acquire);
49 if (engine ==
nullptr) {
51 if (g_event_engine.compare_exchange_strong(engine, created,
52 std::memory_order_acq_rel,
53 std::memory_order_acquire)) {
63 delete g_event_engine.exchange(
nullptr, std::memory_order_acq_rel);