В то время как другие указывают на то, что приложения уже существуют (которые вы действительно должны использовать, если у вас нет явной причины не делать этого), я выброшу случайную идею для индивидуального решения.
Если вы контролируете всеN
процессов затем делают так, что все они имеют одну общую область памяти N
битов (так что 10000 процессов ~ 1 КБ, неплохо).При запуске каждого процесса присвойте ему число i
в диапазоне от 0 до N. Каждые T
секунд каждый процесс будет устанавливать бит i
в общей памяти равным 1. Процесс мониторинга может проверить, что все N
биты равны 1 каждые k*T
секунд, в процессе их все сбрасывается на 0.
Это все еще O (n), чего вы не избежите, но все примитивы очень быстрые и должны хорошо масштабироватьсядо ограничения потока ОС.
Альтернативная идея для получения i
будет состоять в том, чтобы просто использовать PID, но тогда общая память должна быть больше (хотя, вероятно, все еще будет в порядке; например,диапазон Linux PID мал).