diff options
| author | tobo <[email protected]> | 2026-01-20 15:52:26 +0300 |
|---|---|---|
| committer | tobo <[email protected]> | 2026-01-20 16:15:21 +0300 |
| commit | 624324d1e2add7f9a20de6022ee87b482005b8f1 (patch) | |
| tree | cacee4bca675be9b1498dd79f72f01dc812ea47b /library/cpp | |
| parent | b91838abbe7ab48ede4a5cff56e811aaf525a67b (diff) | |
TAtomic => std::atomic
commit_hash:4412172db084730a7f35a60c927e848477ccbcfb
Diffstat (limited to 'library/cpp')
| -rw-r--r-- | library/cpp/sighandler/async_signals_handler.cpp | 24 | ||||
| -rw-r--r-- | library/cpp/sighandler/ya.make | 4 |
2 files changed, 11 insertions, 17 deletions
diff --git a/library/cpp/sighandler/async_signals_handler.cpp b/library/cpp/sighandler/async_signals_handler.cpp index ac3771f0d5d..21a5c63feca 100644 --- a/library/cpp/sighandler/async_signals_handler.cpp +++ b/library/cpp/sighandler/async_signals_handler.cpp @@ -4,18 +4,15 @@ #if !defined(_win_) -#include <errno.h> +#include <cerrno> #include <fcntl.h> -#include <signal.h> -#include <string.h> - +#include <csignal> #include <unistd.h> #if defined(_linux_) #include <dlfcn.h> #endif -#include <library/cpp/deprecated/atomic/atomic.h> #include <util/system/defaults.h> #include <util/system/event.h> #include <util/system/rwlock.h> @@ -24,6 +21,9 @@ #include <util/system/yassert.h> #include <util/generic/hash.h> +#include <atomic> +#include <utility> + namespace { volatile int SIGNAL_PIPE_WRITE_FD = 0; // will be initialized in ctor @@ -51,14 +51,13 @@ namespace { // Async signals -- SIGHUP, SIGUSR1 (used to cause configuration files reread for example) // Sync signals -- fatal errors like SIGSEGV, SIGBUS... class TAsyncSignalsHandler { - private: TThread Thread; int SignalPipeReadFd; typedef THolder<TEventHandler> TEventHandlerPtr; THashMap<int, TEventHandlerPtr> Handlers; TRWMutex HandlersLock; - TAtomic ShouldDie; + std::atomic<bool> ShouldDie = false; TSystemEvent DieEvent; static void* ThreadFunc(void* data) { @@ -67,14 +66,14 @@ namespace { return nullptr; } - inline void RealThreadFunc() { + void RealThreadFunc() { for (;;) { ui8 signum; const ssize_t bytesRead = read(SignalPipeReadFd, &signum, 1); Y_ABORT_UNLESS(bytesRead >= 0 || (bytesRead == -1 && errno == EINTR), "read failed: %s (errno = %d)", strerror(errno), errno); - if (AtomicAdd(ShouldDie, 0) != 0) { + if (ShouldDie.load()) { DieEvent.Signal(); break; @@ -100,7 +99,6 @@ namespace { TAsyncSignalsHandler() : Thread(TThread::TParams(ThreadFunc, this).SetName("sighandler")) , SignalPipeReadFd(0) - , ShouldDie(0) { int filedes[2] = {-1}; @@ -147,7 +145,7 @@ namespace { } ~TAsyncSignalsHandler() { - AtomicSwap(&ShouldDie, TAtomic(1)); + ShouldDie.store(true); ui8 fakeSignal = 0; WriteAllOrDie(SIGNAL_PIPE_WRITE_FD, &fakeSignal, 1); @@ -233,7 +231,7 @@ namespace { public: TFunctionEventHandler(TFunc func) { if (func) - Func = func; + Func = std::move(func); } int Handle(int signum) override { @@ -252,5 +250,5 @@ void SetAsyncSignalHandler(int signum, void (*handler)(int)) { void SetAsyncSignalFunction(int signum, std::function<void(int)> func) { typedef std::function<void(int)> TFunc; - SetAsyncSignalHandler(signum, MakeHolder<TFunctionEventHandler<TFunc>>(func)); + SetAsyncSignalHandler(signum, MakeHolder<TFunctionEventHandler<TFunc>>(std::move(func))); } diff --git a/library/cpp/sighandler/ya.make b/library/cpp/sighandler/ya.make index d303178df45..0dd7c95a07c 100644 --- a/library/cpp/sighandler/ya.make +++ b/library/cpp/sighandler/ya.make @@ -5,8 +5,4 @@ SRCS( async_signals_handler.h ) -PEERDIR( - library/cpp/deprecated/atomic -) - END() |
