Как узнать максимальное количество потоков на процесс в Linux?
Какое максимальное количество потоков может быть создано процессом в Linux?
Как (если возможно) можно изменить это значение?
Ответ 1
В Linux нет отдельного ограничения потоков для каждого процесса, только ограничение на общее количество процессов в системе (потоки — это, по сути, просто процессы с общим адресным пространством в Linux), которые вы можете просмотреть следующим образом:
По умолчанию это количество страниц памяти/4. Это значение можно увеличить так:
echo 100000 > /proc/sys/kernel/threads-max
Также существует ограничение на количество процессов (и, следовательно, потоков), которые может создать один пользователь.
Ответ 2
НЕПРАВИЛЬНО утверждать, что в LINUX нет отдельных потоков для каждого процесса.
number of threads = total virtual memory / (stack size*1024*1024)
Таким образом, количество потоков на процесс можно увеличить, увеличив общую виртуальную память или уменьшив размер стека. Но слишком большое уменьшение размера стека может привести к сбою кода из-за переполнения стека, в то время как максимальная виртуальная память равна размеру памяти подкачки.
Команда для увеличения этих значений:
* Замените новое значение значением, которое вы хотите установить в качестве ограничения.
Ответ 3
Ответ 4
Linux не использует виртуальную память для вычисления максимального количества потоков, а только физическую память, установленную в системе.
max_threads = totalram_pages / (8 * 8192 / 4096);
/* Максимальное количество потоков по умолчанию установлено в безопасное значение.
* значение структуры потоков могут занимать не более половины памяти.
max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
Таким образом, максимальный поток различается для каждой системы, потому что установленная оперативная память может быть разного размера, поэтому Linux не нужно увеличивать виртуальную память, потому что на 32-битной версии у нас есть 3 Г б для пользовательского пространства и 1 Г б — для ядра, на 64-битной версии мы получили 128 Т б виртуальной памяти, что и происходит в Solaris. Если вы хотите увеличить виртуальную память, вам нужно добавить объем подкачки.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Максимальное количество потоков на процесс в Linux?
какое максимальное количество потоков может быть создано процессом под Linux?
как (если возможно) это значение может быть изменено?
16 ответов
Linux не имеет отдельных потоков на ограничение процесса, просто ограничение на общее количество процессов в системе (потоки-это, по сути, просто процессы с общим адресным пространством в Linux), которые вы можете просмотреть следующим образом:
по умолчанию используется количество страниц памяти/4. Вы можете увеличить это как:
существует также ограничение на количество процессов (и, следовательно, потоков), которые может создать один пользователь, см. ulimit/getrlimit для получения подробной информации о эти рамки.
неверно говорить, что LINUX не имеет отдельных потоков на ограничение процесса.
Linux реализует максимальное количество потоков на процесс косвенно!!
таким образом, количество потоков на процесс может быть увеличено за счет увеличения общей виртуальной памяти или уменьшения размера стека. Но слишком большое уменьшение размера стека может привести к сбою кода из-за переполнения стека, в то время как максимальная виртуальная память равна swap память.
проверьте машину:
*замените новое значение значением, которое вы хотите поместить как предел.
ссылки:
на практике предел обычно определяется пространством стека. Если каждый поток получает стек 1 МБ (я не могу вспомнить, является ли это значением по умолчанию в Linux), то у 32-разрядной системы закончится адресное пространство после 3000 потоков (при условии, что последний ГБ зарезервирован для ядра).
однако вы, скорее всего, испытаете ужасную производительность, если будете использовать более нескольких десятков потоков. Рано или поздно вы получаете слишком много накладных расходов на переключение контекста, слишком много накладных расходов в планировщик и так далее. (Создание большого количества потоков делает немного больше, чем съедает много памяти. Но много потоков с actual работа делать будет замедлять вас, как они борются за доступное время процессора)
Что вы делаете, когда этот предел будет еще актуальна?
правильные потоки 100k в linux:
2018 обновление от @Thomas, на системах systemd:
Linux не использует виртуальную память для вычисления максимума потока, но физический ОЗУ, установленный в системе
таким образом, поток max отличается между каждой системой, потому что установленный ОЗУ может быть разных размеров, я знаю, что Linux не нужно увеличивать виртуальная память, потому что на 32 бит мы получили 3 ГБ для пользовательского пространства и 1 ГБ для ядра, на 64 бит мы получили 128 ТБ виртуальной памяти, что происходит на Solaris, если вы хотите увеличить виртуальную память, вам нужно добавить пространство подкачки.
чтобы получить это:
ограничение количества потоков:
как это вычисляется:
P. S: ограничение стога памяти потока 10M внутри моя RHEL VM, а для памяти 1.5 G Эта VM может позволить себе только 150 потоков?
Это, вероятно, не должно иметь значения. Вы получите гораздо лучшую производительность, разрабатывая свой алгоритм для использования фиксированного количества потоков (например, 4 или 8, Если у вас есть 4 или 8 процессоров). Вы можете сделать это с рабочими очередями, асинхронным вводом-выводом или чем-то вроде libevent.
использовать nbio неблокирующий ввод-вывод библиотека или что-то еще, если вам нужно больше потоков для выполнения вызовов ввода-вывода, которые блокируют
проверьте размер стека на поток с помощью ulimit, в моем случае Redhat Linux 2.6:
зависит от вашей системы, просто напишите пример программы [ путем создания процессов в цикле ] и проверьте с помощью ps axo pid,ppid,rss,vsz,nlwp,cmd. Когда он больше не может создавать потоки, проверьте nlwp count [ nlwp-это количество потоков ] вуаля, вы получили свой дурацкий ответ вместо того, чтобы проходить через книги
для тех, кто смотрит на это сейчас, в системах systemd (в моем случае, в частности, Ubuntu 16.04) есть еще один предел, применяемый pids cgroup.максимальный параметр.
по умолчанию установлено значение 12,288 и может быть переопределено в /etc/systemd / logind.conf
другие советы по-прежнему применяются, включая pids_max, threads-max, max_maps_count, ulimits и т. д.
мы можем видеть максимальное количество потоков, определенных в следующем файле в linux
Русские Блоги
Количество процессов и дескрипторов linux
Примечание: версия Linux CentOS7
оглавление
Единая концепция обработки и управления
Программа может открывать несколько объектов, а именно процессов;
Во время работы процесс будет открывать множество ресурсов, включая файл файла, сокет коммуникационного соединения, порт прослушивания и т. Д. Мы называем их коллективными дескрипторами. Все в Linux является файлом, поэтому, когда процесс открывает количество дескрипторов При превышении системного лимита мы получим предупреждение: слишком много открытых файлов.
Во-вторых, ограничения ресурсов Linux
1. Ограничения пользовательских ресурсов
В Bash есть команда ulimit, которая обеспечивает управление доступными ресурсами оболочки и процессами, запускаемыми оболочкой. В основном это количество открытых файловых дескрипторов, максимальное количество процессов пользователя, размер файла coredump и т. Д.
Конфигурацию ограничений ресурсов можно настроить в файле подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/. Система сначала загружает limits.conf, а затем загружает каталог limits.d в алфавитном порядке. После загрузки файла конфигурации он перезапишет предыдущую конфигурацию. Формат конфигурации следующий:
Просмотр ограничений пользовательских ресурсов для входа в текущую оболочку
2. ограничение ресурса обслуживания
Мы всегда упоминали оболочку выше, поэтому для тех пользователей, которые не вошли в систему через аутентификацию PAM, таких как mysql, nginx и т. Д., Вышеуказанная конфигурация не эффективна;
Поскольку в системе CentOS 7 / RHEL 7 вместо предыдущего SysV используется Systemd, область конфигурации файла /etc/security/limits.conf сокращается. Конфигурация в limits.conf применима только для аутентификации PAM. Ограничение ресурсов вошедшего в систему пользователя, оно не влияет на ограничение ресурсов службы systemd.
Формат конфигурации следующий:
= Тип ресурса слева, размер справа
Просмотр лимита ресурсов службы
Например, проверьте влияние конфигурации службы nginx:
3. Лимит системных ресурсов
Для пользователя и службы ранее были выделены ресурсы, но каково общее количество ресурсов в системе? Сюда входят параметры ядра. Существует много параметров ядра. Нам нужно только знать, как изменить наиболее часто используемые, такие как количество процессов и количество дескрипторов.
Три, количество процессов ограничено
1. Ограничьте количество пользовательских процессов.
По умолчанию в /etc/security/limits.d/ есть файл подконфигурации 20-nproc.conf, который используется для установки максимального количества процессов для каждого пользователя.
Проверка /etc/security/limits.d/20-nproc.conf обнаружит, что пользователь root по умолчанию не ограничен, а максимальное количество обычных пользовательских процессов составляет 4096
Фактически, root и обычные пользователи по умолчанию используют значение # cat / proc / sys / kernel / threads-max / 2, что составляет половину количества системных потоков.
Установите максимальное количество процессов на пользователя
Примечание. Изменение файла конфигурации не повлияет на ограничение процесса для текущего пользователя, вошедшего в систему.
2. Лимит процесса обслуживания
Примечание: изменение файла конфигурации не изменит ограничение на количество процессов запущенной в данный момент службы, и ее необходимо перезапустить.
3. Общее количество процессов в системе.
Выше мы установили максимальное количество процессов, которые может открыть каждый пользователь, но это не контролирует общее количество процессов в системе (kernel.pid_max). Предполагая, что kernel.pid_max = 1000, максимальное количество пользовательских процессов пользователя, независимо от того, насколько велико заданное значение, Максимальное количество процессов, которые можно открыть, по-прежнему составляет 1000
Просмотрите глобальный метод pid_max:
Временно измените этот метод значения:
Следовательно, после завершения вышеуказанных операций значение максимального числа пользовательских процессов изменяется правильно.
Вышеуказанное действует только временно, оно будет недействительным после перезапуска машины, постоянный эффективный метод:
Добавьте kernel.pid_max = 65535 в /etc/sysctl.conf
Затем перезапустите машину.
В-четвертых, ограничение количества ручек
1. Ограничьте количество пользовательских дескрипторов
Лимит пользователя для входа, как упоминалось выше, можно настроить с помощью файла подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/ следующим образом:
Примечание: изменение файла конфигурации не повлияет на ограничение дескриптора текущего пользователя, вошедшего в систему.
2. Предел обработки обслуживания
Примечание. Изменение файла конфигурации не приведет к изменению ограничения дескриптора запущенной в данный момент службы.
3. Общее количество системных дескрипторов.
Количество процессов, которые могут быть открыты каждым пользователем, и количество дескрипторов, которые могут быть открыты каждым процессом, указаны выше; есть также файл, который устанавливает общее количество дескрипторов, которые могут быть открыты всеми процессами в системе, то есть этот параметр является системным.
Измените максимальное количество системных дескрипторов, метод следующий (действителен после настройки):
Просмотрите общее количество дескрипторов, используемых в настоящее время в системе:
Максимальное количество потоков на процесс в Linux?
какое максимальное количество потоков может быть создано процессом под Linux?
как (если возможно) можно изменить это значение?
16 ответов:
Linux не имеет отдельных потоков на ограничение процесса, просто ограничение на общее количество процессов в системе (потоки по существу являются просто процессами с общим адресным пространством в Linux), которые вы можете просмотреть следующим образом:
по умолчанию используется число страниц памяти/4. Вы можете увеличить это как:
существует также ограничение на количество процессов( и, следовательно, потоков), которые может создать один пользователь, см. ulimit/getrlimit для получения подробной информации о эти рамки.
это неправильно говорить, что LINUX не имеет отдельных потоков на предел процесса.
Linux реализует максимальное количество потоков на процесс косвенно!!
таким образом, количество потоков в процессе может быть увеличено путем увеличения общей виртуальной памяти или путем уменьшения размера стека. Но слишком большое уменьшение размера стека может привести к сбою кода из-за переполнения стека, в то время как максимальная виртуальная память равна свопу память.
проверьте вашу машину:
*замените новое значение на значение, которое вы хотите поставить как предел.
ссылки:
на практике предел обычно определяется пространством стека. Если каждый поток получает стек 1 МБ (я не могу вспомнить, если это значение по умолчанию в Linux), то вы 32-разрядная система будет работать из адресного пространства после 3000 потоков (при условии, что последний ГБ зарезервирован для ядра).
тем не менее, вы, скорее всего, испытаете ужасную производительность, если вы используете более нескольких десятков потоков. Рано или поздно вы получите слишком много накладных расходов на переключение контекста, слишком много накладных расходов в планировщик и так далее. (Создание большого количества потоков делает немного больше, чем съедает много памяти. Но много потоков с фактическим работа не будет замедлять вас вниз, как они борются за доступное время процессора)
Что вы делаете, когда этот предел будет еще актуальна?
правильные 100k потоки на linux:
2018 обновление от @Фома, системы инициализации по умолчанию:
Linux не использует виртуальную память для вычисления максимального потока, но физическая оперативная память, установленная в системе
таким образом, поток max отличается между каждой системой, потому что установленная оперативная память может быть разных размеров, я знаю, что Linux не нужно увеличивать виртуальная память, потому что на 32 бит мы получили 3 ГБ для пользовательского пространства и 1 ГБ для ядра, на 64 бит мы получили 128 ТБ виртуальной памяти, что происходит на Solaris, если вы хотите увеличить виртуальную память, вам нужно добавить пространство подкачки.
как это вычисляется:
P. S: ограничение стека памяти потока составляет 10 м в моя виртуальная машина rhel и для памяти 1.5 G Эта виртуальная машина может позволить себе только 150 потоков?
вероятно, это не должно иметь значения. Вы получите гораздо лучшую производительность, разрабатывая свой алгоритм для использования фиксированного количества потоков (например, 4 или 8, если у вас есть 4 или 8 процессоров). Вы можете сделать это с помощью рабочих очередей, асинхронного ввода-вывода или чего-то вроде libevent.
использовать nbio неблокирующий ввод-вывод библиотека или что-то еще, если вам нужно больше потоков для выполнения вызовов ввода-вывода, которые блокируют
проверьте размер стека на поток с помощью ulimit, в моем случае Redhat Linux 2.6:
вы должны быть в состоянии поднять это путем компиляции и запуска на 64 бит или настройки ulimit-s 8192 или даже ulimit-s 4096. Но если это целесообразно-другое обсуждение.
зависит от вашей системы, просто напишите пример программы [ путем создания процессов в цикле ] и проверьте с помощью ps axo pid,ppid,rss,vsz,nlwp,cmd. Когда он больше не может создавать потоки, проверьте количество nlwp [ nlwp-это количество потоков ] вуаля, вы получили свой дурацкий ответ вместо того, чтобы проходить через книги
для тех, кто смотрит на это сейчас, в системах systemd (в моем случае, в частности Ubuntu 16.04) есть еще один предел, применяемый pids cgroup.максимальный параметр.
по умолчанию это значение равно 12,288 и может быть переопределено в /etc/systemd/logind.conf
другие советы по-прежнему применяются, включая pids_max, threads-max, max_maps_count, ulimits и т. д.
мы можем видеть максимальное количество потоков, определенных в следующем файле в linux
Русские Блоги
команда ulimit для просмотра и изменения системных ограничений
Подробное объяснение команды ulimit
ulimit используется для ресурсов, занятых процессом запуска оболочки, и может использоваться для установки системных ограничений.
в /etc/security/limits.conf Определено в документе
Ограничения.
Конечно, мы все знаем, что большинство настроек команды Linux временно действуют, а команда ulimit действует только для текущего терминала.
Если это должно быть постоянно эффективно, у нас есть два метода,
Другой способ заключается в добавлении записи в /etc/security/limits.conf (для вступления в силу требуется перезапуск, а модуль ограничения используется при переходе в /etc/pam.d/).
Приложение к файлу Limits.conf
Формат изменения лимитов в /etc/security/limits.conf выглядит следующим образом
| параметры | описание |
|---|---|
| domino | Имя пользователя или группы, начинающиеся с символа @, * означает всех пользователей |
| type | Установить на жесткий или мягкий |
| item | Укажите ресурс, который вы хотите ограничить. Такие как процессор, ядро nproc или maxlogins |
| value | Соответствует |
Максимальное количество процессов
Расчет максимального теоретического количества процессов в LINUX
Локальная таблица описания сегмента LDT каждого процесса существует как независимый сегмент.В глобальной таблице описания сегмента GDT должна быть запись, указывающая на начальный адрес сегмента и указывающая длину сегмента и другие параметры. В дополнение к вышесказанному каждый процесс также имеет структуру TSS (сегмент состояния задачи). Поэтому каждый процесс должен занимать две записи в глобальной таблице описания сегментов GDT.
Ширина сегмента битов, используемого в качестве нижнего индекса таблицы GDT в регистре сегментов, составляет 13 битов, поэтому может быть 2 1 3 = 8192 Описание предметов.
За исключением некоторых системных издержек (например, элементы 2 и 3 в GDT используются для сегмента кода и сегмента данных ядра, элементы 4 и 5 всегда используются для сегмента кода и сегмента данных текущего процесса, элемент 1 Всегда 0 и т. Д.), По-прежнему доступно 8180 записей, поэтому теоретически максимальное количество процессов в системе равно 8180 / 2 = 4090 。
Таким образом, теоретическое максимальное количество процессов в системе составляет 4090
Фактическое количество процессов, которые могут быть созданы в системе
Для обеспечения совместимости со старыми версиями Unix или Linux максимальное значение PID по умолчанию установлено равным 32768 (максимальное значение short int).
Можно использовать cat /proc/sys/kernel/pid_max Для просмотра фактического значения количества процессов, которые могут быть созданы в системе
После установки, хотя мы установили жесткое ограничение и мягкое ограничение числа процессов создания пользователя 65535, мы не можем использовать для создания 65535 процессов
Нам также нужно установить параметр ядра kernel.pid_max в Linux. Этот параметр по умолчанию равен 32768.
Таким образом, даже если используется учетная запись root, этот параметр ядра не задан, и максимальное количество процессов, которое может быть создано всей системой, равно 32768, поэтому нам необходимо установить следующее:
Максимальное количество потоков
Максимальное количество потоков одного процесса в системе Linux имеет максимальное ограничение PTHREAD_THREADS_MAX
Этот предел может быть /usr/include/bits/local_lim.h Посмотреть в
Для linuxthreads это значение обычно составляет 1024, для nptl нет жесткого ограничения, ограничивается только системными ресурсами.
Вы можете написать простой код, чтобы проверить, сколько потоков можно создать.
Эксперименты показывают, что в нашей системе (Ubuntu-14.04-LTS-64bit) на linuxthreads можно создать максимум 381 поток, после чего он вернется в EAGAIN.
Максимальное количество потоков, которое теоретически может создать отдельный процесс в Linux
Так почему же на linuxthreads есть одна нить? Это правильно, потому что linuxthreads также нуждается в потоке управления
Чтобы преодолеть ограничение памяти, есть два метода
вызов pthread_create Время с pthread_attr_getstacksize Установить меньший размер стека
Следует отметить, что даже это не может нарушить жесткий предел 1024 потоков, если библиотека C не будет перекомпилирована
Максимальное количество открытых файлов
Максимальное количество файловых файловых дескрипторов системы
/ proc / sys / fs / file-max определяет общесистемное количество дескрипторов файлов, которые могут быть открыты всеми процессами (системный уровень, уровень ядра).
The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate).
Когда вы получаете сообщение об ошибке типа «Слишком много открытых файлов в системе», вы должны добавить это значение.
Для ядер 2.2 также необходимо учитывать inode-max. Как правило, inode-max устанавливается в 4 раза больше, чем file-max. Для ядер 2.4 и новее нет файла inode-max.
Посмотреть актуальное значение
Вы можете использовать cat / proc / sys / fs / file-max для просмотра количества дескрипторов файлов, которые могут быть открыты одним процессом в текущей системе.
186405
Настроить
Максимальное количество файловых дескрипторов, поддерживаемых ядром, то есть максимальное количество файловых дескрипторов, используемых процессом
the maximum number of files that can be opened by process。
Nofile обрабатывает максимальное количество дескрипторов открытых файлов
Посмотреть актуальное значение
Настроить
Для пользователей без полномочий root вы можете установить только жесткий предел, меньший, чем исходный.
Вышеуказанный метод является только временным, выход из системы и вход в систему будут недействительными, и жесткий предел не может быть увеличен, только мягкий предел может быть изменен в пределах жесткого ограничения.
Чтобы сделать изменение постоянным и эффективным, вам нужно установить его в /etc/security/limits.conf (требуется разрешение root), вы можете добавить следующие две строки, указывающие, что мягкое ограничение максимального числа дескрипторов открытых файлов для пользовательского канала составляет 1800000, жесткое ограничение 2000000. Для вступления в силу следующих настроек необходимо выйти и войти снова:
Еще одна вещь, которую следует отметить при установке жесткого предела nofile, заключается в том, что жесткий предел не может быть больше, чем / proc / sys / fs / nr_open. Если жесткий предел больше, чем nr_open, вы не сможете войти в систему после выхода из системы.
Значение nr_open можно изменить:
Связь между file-max, nr_open, onfile
Для ограничения максимального количества файлов, открытых пользователем, nofile, соответствующий limit.conf, будь то руководство пользователя или файл, является всего лишь предложением
Фактически это соответствует максимальному количеству файлов, которые могут быть открыты одним процессом. Обычно, чтобы избежать проблем, мы хотим снять его ограничение.
Однако, когда вы фактически установите nofile на это значение, вы обнаружите, что не можете войти в систему при перезапуске.
Видно, что у nofile есть верхний предел и тест ulimit:
bash: ulimit: открытые файлы: невозможно изменить ограничение: операция запрещена
Напишите простой цикл for, чтобы получить:
1024 ∗ 1024 = 1048576 Конечно, яиц мало используют.
После повторной трассировки мы обнаружим, что это значение фактически определяется параметром ядра nr_open:
На этом этапе мы поговорим о nr_open и file-max. Когда дело доходит до установки максимального количества файлов в Интернете, в некоторых публикациях также иногда говорится, что file-max необходимо изменить. Буквально, file-max действительно соответствует максимальному количеству файлов. Объяснение двух в документации ядра Linux:
Согласно их обсуждению, дескриптор файла должен быть объектом высокого уровня, который вызывается с использованием таких функций, как fopen и fread, а FD является базовым объектом, который можно вызывать с помощью таких функций, как open и read.
Количество файловых дескрипторов, открытых всеми процессами, не может превышать / proc / sys / fs / file-max
Количество файловых дескрипторов, открытых одним процессом, не может превышать мягкое ограничение nofile в пользовательском ограничении
Мягкий предел Nofile не может превышать его жесткий предел
жесткий предел nofile не может превышать / proc / sys / fs / nr_open
другое
Следующее содержание воспроизводится с
Основное отличие ядра 2.4 от ядра 2.6
В типичной системе с ядром 2.4 (AS3 / RH9) потоки реализованы с облегченными процессами. Каждый поток занимает идентификатор процесса. В программе сервера, если он сталкивается с доступом с высокой скоростью кликов, он вызывает переполнение таблицы процессов. Чтобы поддерживать переполненную таблицу процессов, система будет периодически приостанавливать обслуживание, и ядро 2.6 не будет вызывать проблему переполнения таблицы процессов из-за создания и уничтожения большого количества потоков.
Стек потока должен быть освобожден, когда поток заканчивается
Другими словами, функция потока должна вызывать pthread_exit () для завершения, иначе она не будет освобождена до тех пор, пока не прекратится выполнение основной функции процесса, особенно в среде ядра 2.6, скорость создания потока будет высокой, а память случайно израсходована. Это среда ядра 2.4. Потому что ядро 2.4 создает процессы, а скорость создания потоков на несколько порядков ниже, чем в ядре 2.6. В частности, на 64-разрядных процессорах скорость создания потоков в ядре 2.6 еще выше, если он слишком быстрый, лучше добавить usleep (), чтобы сделать паузу на некоторое время.
Не создавайте резьбовые приложения, требующие блокировки
Только те программы, которые не нуждаются в мьютексах, могут максимально использовать преимущества потокового программирования, в противном случае оно будет только медленнее. Ядро 2.6 является преимущественным ядром, и вероятность разделения конфликтов между потоками намного выше, чем в среде ядра 2.4. Обратите внимание на безопасность потоков. В противном случае даже один ЦП может привести к несинхронизации некоторой необъяснимой памяти (кэш-память ЦП и содержимое основной памяти несовместимы). Новый ЦП Intel использует архитектуру NUMA для повышения производительности. Вам следует обратить внимание, чтобы избежать недостатков в программировании потоков.
Максимальное количество одновременных потоков и памяти для однопроцессного сервера
Примечание 1
Вентиляторы BSD в устройстве использовали ноутбук AMD64 для запуска небольшой программы для проверки скорости создания потока (phread_detach () сразу после создания потока, а затем pthread_exit (), всего 1 миллион потоков). Тот же исходный код OpenBSD был в 3 раза быстрее, чем FreeBSD Когда OpenBSD сошел с ума?












