Python Glossary English

Python 3.3+Linux · macOSsignalфункция

signal.pthread_sigmask()

маски и ожидание

Читает и меняет маску заблокированных сигналов текущего потока; возвращает прежнюю маску. Только Unix (Linux, macOS).

Синтаксис

old_mask = signal.pthread_sigmask(how, mask)

Заблокированный сигнал не теряется, а ждёт: после разблокировки обработчик сработает сразу, но несколько одинаковых сигналов сольются в один. Маска — свойство потока, а не процесса, и новые потоки наследуют её от создателя: так блокируют сигналы во всех рабочих потоках. Прочитать маску, ничего не меняя, — pthread_sigmask(SIG_BLOCK, []). SIGKILL и SIGSTOP не блокируются.

Примеры

import signal
got = []
old = signal.signal(signal.SIGUSR1, lambda s, f: got.append(s))
signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGUSR1})
signal.raise_signal(signal.SIGUSR1)
signal.raise_signal(signal.SIGUSR1)
print(len(got))  # → 0 — сигналы ждут
signal.pthread_sigmask(signal.SIG_UNBLOCK, {signal.SIGUSR1})
print(len(got))  # → 1 — два одинаковых слились в один
signal.signal(signal.SIGUSR1, old)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности