powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MultiThreading
14 сообщений из 14, страница 1 из 1
MultiThreading
    #32636774
Фотография EvAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 3000; i++)
            {
                ThreadStart trdSt = new ThreadStart(empty);
                Thread trd = new Thread(trdSt);
                trd.Start();

            }

        }
        public void empty()
        {
            while (true)
            {
                Thread.Sleep(1000);
            }
        }
Почему то не получается открыть больше 1883 Threads....
...
Рейтинг: 0 / 0
MultiThreading
    #32636810
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvAlexПочему то не получается открыть больше 1883 Threads....

А диагностика какая ?
...
Рейтинг: 0 / 0
MultiThreading
    #32636816
Фотография EvAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SystemOutOfMemory

причём не важно на каком компе я это пробую.
...
Рейтинг: 0 / 0
MultiThreading
    #32636845
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня 1902 threads у кого больше

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
MultiThreading
    #32636962
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvAlexSystemOutOfMemory

причём не важно на каком компе я это пробую.

Попробуйте отключить антивирус, посмотреть какие процессы идут идут и т.п.

.Net здесь непричем
...
Рейтинг: 0 / 0
MultiThreading
    #32637271
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждому потоку выделяется по 1Мб стека. Делим 2Гб виртуальной памяти, которые любая win32 прога может использовать в своих целях, на 1Мб, получаем максимальное кол-во потоков - 2000. Но так как используется память не только на стэк, макс. кол-во потоков будет слегка меньше 2000. Все сходится.
...
Рейтинг: 0 / 0
MultiThreading
    #32637397
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае тредпул позволяет всего 25 активных :)

Magnus
...
Рейтинг: 0 / 0
MultiThreading
    #32637462
Фотография EvAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь-то понятно,
но вопрос в силе, как больше открыть?
можно ему меньше stack выделить?
...
Рейтинг: 0 / 0
MultiThreading
    #32638078
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Win32API можно задавать размер стека при создании потока, а в .net только сказано, что каждому потоку выделяется дефолтный размер стэка и всё. Похоже, что нельзя.
...
Рейтинг: 0 / 0
MultiThreading
    #32639310
Фотография josia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvAlexно вопрос в силе, как больше открыть?Извините за праздный интерес. Каую задачу Вы решаете ? Очень любопытно. Спасибо.
...
Рейтинг: 0 / 0
MultiThreading
    #32639346
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему чисто академическую :)
Не представляю себе задачу которая была бы эффективно обработана на одной машине в 2000-ах тредов.
Разве что нечто асинхронное(слухалка портов?). Да и то, чисто теоретически.

Magnus
...
Рейтинг: 0 / 0
MultiThreading
    #32639841
Фотография EvAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DankovВ Win32API можно задавать размер стека при создании потока, а в .net только сказано, что каждому потоку выделяется дефолтный размер стэка и всё. Похоже, что нельзя.
Да я знаю - есть EDITBIN утилитка, которая любому dll или exe меняет(задаёт) размер стека.
Я лично не верю, что .NET уступает традиционым средствам программирования.

josiaИзвините за праздный интерес. Каую задачу Вы решаете ? Очень любопытно. Спасибо.
Обработка видео-потоков в реальном времени. В этих аппликациях тысячи потоков не является чем-то необычным. (учитывая то что пред. версия написанная на java неплохо это демонстрирует)

Magnus23Не представляю себе задачу которая была бы эффективно обработана на одной машине в 2000-ах тредов.
Разве что нечто асинхронное(слухалка портов?). Да и то, чисто теоретически.

Когда создаётся аппликация в несколько десятков тысяч у.е. за минимальную лицензию - проверятся столько теорий :)
И вправду асинхронная обработка потоков...

Народ - что и вправду меньше 1Мб стек нельзя задать???
...
Рейтинг: 0 / 0
MultiThreading
    #32640361
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вынеси часть кода, создающую потоки, в обычную DLL, а в .net приложении используй эту DLL через interop. В DLL создавай потоки через апишную CreateThread, где вторым параметром задается размер стэка. Тогда можно будет создать гораздо больше потоков.

Если есть существенная вероятность, что не все потоки будут активно работать одновременно, то может быть вам создавать потоки неявно, а через асинхронные делегаты только в момент необходимости?
...
Рейтинг: 0 / 0
MultiThreading
    #32643664
Фотография EvAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл наконец-то "официальное" объяснение...
тут

Это мне понравилось cbrummeClearly that’s an absurd number of threads
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MultiThreading
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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