Pull to refresh
8
Василий Куликов@segoon

Разработчик

6
Subscribers
Send message
Это ничего, у линукса теоретический предел пока 4096 :)
В тему про массив производных классов и указатель на базовый класс.
Указатель на производный класс можно привести к указателю на базовый класс, но указатель на указатель на производный класс нельзя приводить к указателю на указатель на базовый класс :))
Хм, да, про FSM — слоника-то я и не заметил, извините :)
«Нечистый FSM» описан по ссылке, что я дал выше.
Автору спасибо, но есть несколько замечаний.

> Итак, первым делом любой демон вызывает системную функцию bind(), которая создает файл специального типа «слушающий сокет».
В корне неверно. Создаёт сокет сис. вызов socket(2). bind(2) связывает сокет с конкретным портом/сетевым интерфейсом, можно получить и клиентский (неслушающий) сокет с пом. bind. Вот listen(2) переводит сокет в слушающий режим и, если сокет ещё не связан с портом, то осуществляет принудительное связывание; после успешного вызова listen bind будет возвращать ошибку.

>Потоки — это максимально легкие «процессы»
Если вы говорите о UNIX, то необходимо упомянуть, что в Linux они никакие не лёгкие, структура в ядре для потоков и процессов та же самая, просто потоки имеют одно и то же адресное пространство. Т.к. все ключевые девелоперы ядра признают, что потоки в принципе — зло, то никто особо не чешется их оптимизировать.

Незаслуженно забыта модель FSM, на которой основан nginx:
https://groups.google.com/group/fido7.ru.unix.prog/browse_thread/thread/e8f8edf4f2f2447b/?hl=ru
Всё-таки это 3 строчки. А то так в любой программе можно стереть все \n, если компилятор допускает строки какой угодно длины…
Теперь это будет новым ходом — оказать некие услуги, а потом шантажировать заказчиков тем, что ты — пират, и, если это раскроется, то они сядут вместе с тобой.
А я использую git для синхронизации многочисленных конфигов на нескольких компьютерах: ~/sync/ (который под гитом) содержит сами конфиги, а, к примеру, ~/.vimrc — симлинк на ~/sync/vim/vimrc, ~/.muttrc -> ~/sync/mail/muttrc.

Плюсы — если меняются файлы на двух или более машинах, то при мерже с ручной правкой сразу видно что и как было изменено.
Дополнительный плюс — если даже конфиг был удалён, он останется в истории :)
Если куплю новый компьютер/установлю новую систему, то надо будет просто выполнить git clone ssh//segoon@XXX:sync && cd sync && ./scripts/update-links.
Если задолбает история, то можно будет сделать rm .git && git init && git add. && git commit -m 'After armageddon'
Главного не написал — tmpfs лезет в swap, если нет места в RAM.
Ну, у меня много более 1 Гб забивается при использовании баузера или виртуальных машин :)

А swap нужен ещё для /tmp (или что ещё пожелаете) под tmpfs: ФС, которая хранится по возможности только в оперативе, и сбрасывается на хард только в случае нехватки RAM. В отличие от delayed allocation у ext4/XFS и прочих, tmpfs вообще не будет трогать хард, если есть свободная оператива.
А зачем swap отключать? Или вы не используете tmpfs?
Добавление к UDP3: атомарные операции нужно использовать во всех местах работы с данными. В данном случае и в close().

Защищать нужно не код, а данные :)
12 ...
8

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Works in
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий
Linux
C
C++
Python
Bash
REST