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

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

Код: 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
08.11.2015, 08:25
    #39097490
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
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
08.11.2015, 09:08
    #39097496
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
blest,

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

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

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

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

Он не сразу 15 потоков создает, а с какой-то задержкой, попробуй выставить ThreadPool.SetMinThreads в 15
http://stackoverflow.com/questions/7600774/threadpool-not-starting-new-thread-instantly
...
Рейтинг: 0 / 0
08.11.2015, 19:43
    #39097730
maratoss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
Вот кстати еще
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
08.11.2015, 20:18
    #39097750
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сколько потоков может выполняться одновременно в System.Threading.Tasks ?
maratossblest,

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

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

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

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


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