Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер стека для потока / 13 сообщений из 13, страница 1 из 1
09.09.2003, 17:54
    #32260383
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Подскажите как оперделить оптимальный размер стека для потока что-бы запустить большое кол-во потоков в процессе (более 2000).
Т.к значение по умолчанию 1 мега явно много для моей функции

Может по размеру передаваемых аргументов функции(тип указателя)?
Короче незнаю.
Please HELP !!!!
...
Рейтинг: 0 / 0
10.09.2003, 03:39
    #32260610
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
причем тут размер стека и кол-во потоков???
вообще говоря каждому потоку выделяется свой стек и именно с ним и работает функция потока. Равно как и размер передаваемых аргументов тоже мало что скажет... Ты в курсе что в стеке хранятся не только передаваемые данные, но и адреса точек возврата из функций, все локальные переменные, а так же все то что компилятор посчитает нужным туда засунуть. Поводом для увеличения размера стека является появление ошибки Stack overflow при невозможности другими путями избавится от нее (чаще всего возникает при рекурсии)... можно на нее же орентироваться при уменьшении... грубо говоря выводим прогу на режим когда она по максимуму пихает в стек, уменьшаем его размер до появления ошибки умножаем размер стека на коэффициент запаса, который принимается равным пи либо 2*пи и выставляем. А потом молимся чтоб прога не выжрала и этот объем...
...
Рейтинг: 0 / 0
10.09.2003, 03:45
    #32260611
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
P.S.
и еще почитай про стек подробно. Эта та область где, если не разбираешься то не лезь
...
Рейтинг: 0 / 0
10.09.2003, 08:58
    #32260693
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Читай MSDN.

The number of threads a process can create is limited by the available virtual memory. By default, every thread has one megabyte of stack space. Therefore, you can create at most 2028 threads. If you reduce the default stack size, you can create more threads. However, your application will have better performance if you create one thread per processor and build queues of requests for which the application maintains the context information. A thread would process all requests in a queue before processing requests in the next queue.
...
Рейтинг: 0 / 0
10.09.2003, 09:06
    #32260701
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Silent_Sasha
и что ты этим хотел сказать?
знаешь, я бы мог тебя отправить тогда уж еще дальше, к документации Intel на защищенный режим процессоров...
а вот то что ты привел, я так и не понял к чему это.... только еще больше укрепился в мысли что ты в этом не компетентен в этом вопросе...
хотя если был бы компетентен, то не задавал бы... но тогда причем тут выдержка, которую ты привел?
...
Рейтинг: 0 / 0
10.09.2003, 09:14
    #32260711
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Разговор идет об функции
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
DWORD dwStackSize, // initial stack size
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
LPVOID lpParameter, // thread argument
DWORD dwCreationFlags, // creation option
LPDWORD lpThreadId // thread identifier
);

в частности DWORD dwStackSize // initial stack size

для функции LPTHREAD_START_ROUTINE lpStartAddress, // thread function
...
Рейтинг: 0 / 0
10.09.2003, 10:06
    #32260783
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
я в курсе и об этой функции и о десятке других.
и уж догадываюсь каким образом запускается функция потока... в моем сервисе сейчас дружат около 4 явных, постоянных потоков и фигова туча тех кто появляется и исчезает при возникновении различных событий...
...
Рейтинг: 0 / 0
10.09.2003, 10:16
    #32260798
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Мне нужно запустить не 4 и не 10 потоков а более 2000
каким образом это осуществить
...
Рейтинг: 0 / 0
10.09.2003, 11:14
    #32260877
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
2000...
а зачем? можно полюбопытствовать? если такой зверинец глюкнет, то будут большие проблемы.... ОЧЕНЬ большие проблемы....
тогда в твоем случае актуально у меньшение размера стека.... всеж при стандартном размере это будет 2 гига памяти...
только всеж... поделись секретом, зачем?
более того, ты в курсе что существуют накладные расходы на переключение между потоками? на 2000 потоках это будет очень даже актуально... я думаю эт будет один великий тормоз, а не приложение
...
Рейтинг: 0 / 0
10.09.2003, 11:36
    #32260923
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
<<я думаю эт будет один великий тормоз, а не приложение>>
Не для 8 процесорной системы

А приложение всего лишь нейросимулятор

Если ты знаешь как это осуществить (оптимальный размер стека для потоковой функции), дай совет, а иначе нечего и любопытствовать.
...
Рейтинг: 0 / 0
10.09.2003, 11:44
    #32260935
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
как расчитать я знаю
но извини, с тобой не хочется делится!!!
тебе надо помимо всего прочего научится общаться
...
Рейтинг: 0 / 0
10.09.2003, 11:53
    #32260955
Silent_Sasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
Да, а помоему ты только и делал, что на меня наезжал.

Вопрос закрыт, ответ поищу в другом месте.
...
Рейтинг: 0 / 0
10.09.2003, 12:50
    #32261071
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер стека для потока
2 Silent_Sasha
>> <<я думаю эт будет один великий тормоз, а не приложение>>
> Не для 8 процесорной системы
думаю даже и для такой...
так ведь совет был сразу дан... почитай повнимательней первый ответ... да и второй тоже к месту, хотя резковато.... и я думаю, надо всеми путями стараться уменьшить и не увеличивать число создаваемых потоков. это также та же самая область...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер стека для потока / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]