Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MultiThreading / 14 сообщений из 14, страница 1 из 1
05.08.2004, 13:35
    #32636774
EvAlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MultiThreading
Код: 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
05.08.2004, 13:48
    #32636810
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MultiThreading
EvAlexПочему то не получается открыть больше 1883 Threads....

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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