powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / что лучше использовать Thread/ThreadPool/Async ?
16 сообщений из 16, страница 1 из 1
что лучше использовать Thread/ThreadPool/Async ?
    #38240705
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написал тут тестик небольшой.

Оный реализует некую схему-картинку




Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
  
public delegate void ASYNC(TMP_DATA Q);

class BORHS
{ ....
    static public void RE_CALL(TMP_DATA D)
        {
            switch (BORSH.CALL_TYPE)
            {
                case 1: new ASYNC                   ( INIT_THREAD).BeginInvoke(D, null, null); break;
                case 2: ThreadPool.QueueUserWorkItem( INIT_THREAD, D); ; break;
                case 3: new Thread                  ( INIT_THREAD).Start(D);break;
            }
        }
      public static void INIT_THREAD(object _Q)
        {
            TMP_DATA D = (TMP_DATA)_Q;
            MY_BUTTON MYB = (MY_BUTT)D.CONT;
            int K = 40;
            int SLEEP = D.TIME / K;

            for (int Q = 0; Q < K; Q++)
            {
                D.TXT = S + "(" + ((Q * 100)/K) + "%)";
                MYB.FORMA.Invoke(DEL1, D);
                Thread.Sleep(SLEEP);
            }
            //СИГНАЛ О ЗАВЕРШЕНИИ
            foreach (var T in MYB.NEXT_TASKs)   T.FINISHED();
       }
}

class MY_BUTTON 
{
 .....
 public void FINISHED()
        {
            lock (LOCK)
            {  INCOME++;
                if (INCOME==....)
                {
                        // ну тут запускаем новый процесс
                        TMP_DATA D = new TMP_DATA();
                        BORSH.RE_CALL(D);
                }
            }
        }
}



что то в таком тесте обычный Thread как то явно быстрее. ( хотя на синтетических тестах Threadpool в 100 раз быстрее "создаёт" потоки)

время работы трёх тестов на картинке. ( каждому заданию, при запуске устанавливается какое то время от 1 до 2 секунд)

мож где то я не прав.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38240985
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

не могу читать этот код , глаза сломал
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241007
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень странный у вас код какой-то :)
тут везде 1 поток в фоне. Для таких задач обычно юзается BackgroudWorker
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241019
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код и вправду жестокий. Так или иначе, почему не рассматривается новомодный TPL?
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241029
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanтут везде 1 поток в фоне. Для таких задач обычно юзается BackgroudWorker
Там вообще-то столько потоков, сколько надо . и далеко не один.
типа сколько кнопок , столько "технологических" процессов - столько и потоков.


авторТак или иначе, почему не рассматривается новомодный TPL?
ну вся эта новомодность....это игра на базовых вещах. те же thread и async в новом флаконе.
попробую подключить и этот вариант.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241032
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erну вся эта новомодность....это игра на базовых вещах. те же thread и async в новом флаконе.
Глупости.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241034
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperbeg-in-erну вся эта новомодность....это игра на базовых вещах. те же thread и async в новом флаконе.
Глупости.
чудес не бывает.
всё что может TPL это то что может предоставить Windows. а установка версии >= .Net 4.0 явно не добавит функционала в саму ОС
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241036
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, вообще, это не тест, а хрень на постном масле. Хочешь тестов, выкладывай полностью код какой-нить тривиальной задачи.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241040
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erчудес не бывает.
всё что может TPL это то что может предоставить Windows. а установка версии >= .Net 4.0 явно не добавит функционала в саму ОС
Чудеса в новом движке, который ты лучше вряд ли напишешь.

http://msdn.microsoft.com/ru-ru/library/dd460717.aspx Библиотека параллельных задач (TPL) представляет собой набор открытых типов и API-интерфейсов в пространствах имен System.Threading и System.Threading.Tasks в .NET Framework 4. Библиотека параллельных задач предназначена для повышения производительности разработчиков за счет упрощения процесса добавления параллелизма в приложения. Она динамически масштабирует степень параллелизма для наиболее эффективного использования всех доступных процессоров. Кроме того, в библиотеке параллельных задач осуществляется секционирование работы, планирование потоков в пуле ThreadPool, поддержка отмены, управление состоянием и выполняются другие низкоуровневые задачи. Используя библиотеку параллельных задач, можно повысить производительность кода, сосредоточившись на работе, для которой предназначена программа.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241049
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

я упорно не вижу где "поток" на каждый техпроцесс.
Тест реально фуфло, 1 секунда это погрешность, без обид :)
юзать Task для таких задач лучше всего.
МСУ не слушайте, он с TPL всем мозг проел - это все равно тот же пул, только оптимизированный, но то что его следует использовать тут он прав (см предыдущий пункт). Создание Thread это тяжко и немодно =)
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241071
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ не слушайте, он с TPL всем мозг проел - это все равно тот же пул, только оптимизированный, но то что его следует использовать тут он прав
Так слушать МСУ или в топку его гавносоветы?
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241076
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperТак слушать МСУ или в топку его гавносоветы?
Слыш, челядь, это у тебя гавносоветы!
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241078
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не гунди.
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241081
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,

слушайть в плане использования, но не парьте мозг,что это супер новинка. Поменяли решетку радиатора - уже РЕСТАЙЛ =)
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241083
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanbeg-in-er,

я упорно не вижу где "поток" на каждый техпроцесс.

1. поток завершает работу -> запускает для всех потомков финиш
2. каждый финиш запускает метод Re_call
3. ну а Re_call, в зависимости от параметра , запускает новое.
case 3: new Thread ( INIT_THREAD).Start(D);break;

при таком подходе , создание Thread это тяжко и немодно .... да вообще ни о чем.

netivanТест реально фуфло, 1 секунда это погрешность, без обид :)
ну на 20 потоках да, подкину потоков побольше , там и видно будет
...
Рейтинг: 0 / 0
что лучше использовать Thread/ThreadPool/Async ?
    #38241104
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

да, кстати. Thread.Sleep "убивает" пул потоков. Поэтому не очень корректно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / что лучше использовать Thread/ThreadPool/Async ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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