powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
11 сообщений из 11, страница 1 из 1
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097489
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в заголовке. Я читал про прерывания, кол-ва ядер (в моем случае их два) и т.д.

Вот такой простой пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    class Program
    {
        static void Main(string[] args)
        {
            var ListTasks = new List<Task>();

            for (int i = 1; i <= 15; i++)
            {
                var t1 = Task.Factory.StartNew(() => GetBets());
                ListTasks.Add(t1);
            }

            Task.WaitAll(ListTasks.ToArray());

            Console.ReadLine();
        }

        public static void GetBets()
        {
            Console.WriteLine(DateTime.Now.ToLongTimeString());

            Thread.Sleep(5000);
        }
    }



И результат ниже я не могу объяснить


Почему потоки запускаются по 2-3 раза в секунду? Если ожидается выполнение предыдущих потоков, то почему не через 5 секунд?
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097490
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestВопрос в заголовке. Я читал про прерывания, кол-ва ядер (в моем случае их два) и т.д.

Вот такой простой пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    class Program
    {
        static void Main(string[] args)
        {
            var ListTasks = new List<Task>();

            for (int i = 1; i <= 15; i++)
            {
                var t1 = Task.Factory.StartNew(() => GetBets());
                ListTasks.Add(t1);
            }

            Task.WaitAll(ListTasks.ToArray());

            Console.ReadLine();
        }

        public static void GetBets()
        {
            Console.WriteLine(DateTime.Now.ToLongTimeString());

            Thread.Sleep(5000);
        }
    }



И результат ниже я не могу объяснить


Почему потоки запускаются по 2-3 раза в секунду? Если ожидается выполнение предыдущих потоков, то почему не через 5 секунд?
используй Task.Delay()
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097496
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

Напиши своими словами что, по-твоему, происходит в написанной тобой программе
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097527
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Один раз я ошибся и у меня запустилось около 1000 потоков
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097696
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisblest,

Напиши своими словами что, по-твоему, происходит в написанной тобой программе

Запускаю одновременно 15 потоков, на экране хочу увидеть одно и тоже время
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097719
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

по умолчанию таймер в винде срабатывает сравнительно с низкой частотой
запусти что нить типа видео в плеере от микрософт и посмотри результат в это время
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097725
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

Он не сразу 15 потоков создает, а с какой-то задержкой, попробуй выставить ThreadPool.SetMinThreads в 15
http://stackoverflow.com/questions/7600774/threadpool-not-starting-new-thread-instantly
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097730
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кстати еще
http://stackoverflow.com/questions/22036365/newly-created-threads-using-task-factory-startnew-starts-very-slowly

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
// Get thread pool information
int workerThreadsMin, completionPortThreadsMin;
ThreadPool.GetMinThreads(out workerThreadsMin, out completionPortThreadsMin);
int workerThreadsMax, completionPortThreadsMax;
ThreadPool.GetMaxThreads(out workerThreadsMax, out completionPortThreadsMax);

// Adjust min threads
ThreadPool.SetMinThreads(workerThreadsMax, completionPortThreadsMin);
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097750
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maratossblest,

Он не сразу 15 потоков создает, а с какой-то задержкой, попробуй выставить ThreadPool.SetMinThreads

Убрать Sleep, и не придется ничего выставлять
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097762
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest, как уже отметил maratoss Task использует ThreadPool который и создает эти задержки. Чтобы их не было используй Thread или используй TaskCreationOptions.LongRunning
Код: c#
1.
var t1 = Task.Factory.StartNew(() => GetBets(), TaskCreationOptions.LongRunning);
...
Рейтинг: 0 / 0
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
    #39097806
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maratossblest,

Он не сразу 15 потоков создает, а с какой-то задержкой, попробуй выставить ThreadPool.SetMinThreads в 15
http://stackoverflow.com/questions/7600774/threadpool-not-starting-new-thread-instantly

Спасибо, то что искал. Я почему-то все смотрел в сторону SetMaxThreads, хотя достаточно было документацию прочитать
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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