>итак(без запуска этой функции) потоки создаю и они ВРОДЕ КАК одновременно
>работают. Зачем тогда она нужна.
Из SUSv3:
--------------
Unbound threads in a process may or may not be required to be simultaneously active. By default, the threads implementation ensures that a sufficient number of threads are active so that the process can continue to make progress. While this conserves system resources, it may not produce the most effective level of concurrency.
The pthread_setconcurrency() function allows an application to inform the threads implementation of its desired concurrency level, new_level. The actual level of concurrency provided by the implementation as a result of this function call is unspecified.
--------------
Итого: данная функция предоставляет возможность приложению подать системе
знак о том, что можно ограничить степень параллелизма выполняемых потоков.
По умолчанию уровень оного параллелизма максимален; задав некое значение
(не равное нулю), можно этот параллелизм уменьшить, дабы облегчить жизнь
планировщику.
Должен добавить, что всё это имеет практический смысл только при
использовании поточной модели N-M, где некое количество потоков
пользователя конкурируют за использование времени в потоках ядра.
Подобные реализации сейчас в силу их сложности не в моде. Тогда
эта функция вообще ничего полезного не делает:
--------------
If an implementation does not support multiplexing of user threads on top of several kernel-scheduled entities, the pthread_setconcurrency() and pthread_getconcurrency() functions are provided for source code compatibility but they shall have no effect when called. To maintain the function semantics, the new_level parameter is saved when pthread_setconcurrency() is called so that a subsequent call to pthread_getconcurrency() shall return the same value.
--------------
>
>и вдогонку вопрос каким образом можно определить переполняется
>ли стек в потоке?
>
>
>pthread_attr_setstackaddr() вроде как предназначеня для увеличение
>этого стека но прежде чем увеличивать хотелось бы знать насколько стек
>заполняется в процессе работы программы, как
>это можно проверить.... ктонить подскажет?
>
При переполнении с небес слетит SIGABRT, если я не ошибаюсь. Или
SIGSEGV - там в конце вроде бы guard-страница?
Если до сих пор такой беды не видно, то и стек отращивать незачем.
А вот в уменьшении при большом количестве потоков есть прямой смысл.