Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12

Выигрышь в скорости с несколькими потоками?..

08.06.2009, 09:08. Показов 3328. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программу (связана с рассчётом) написал в двух видах: последовательном и многопоточном.. В случае с одним потокм создаётся один класс проводящий рассчёты, в многопоточном варианте - параллельно несколько классов. Проблема в том, что нет выигрыша во времени рассчёта. При этом в однопотчном случае проц. загружен на 50%, а в многопоточном на 100% (не особо зависит от количества потоков). Проц. хороший Intel 2-х ядерный 3.. Гига на ядро.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2009, 09:08
Ответы с готовыми решениями:

Работа с несколькими потоками
у меня вопрос, к тем кто работает с многопоточными приложениями у меня алгоритм такой: в основном потоке запускаю потоки в цикле ...

Запись в файл несколькими потоками
Помогите решить задачу Создать k потоков, которые одновременно пишут в один и тот же файл символы: ...

Закачка файла несколькими потоками.
Кто знает, как на Java посылать на сервер HTML-запрос на скачивание части файла? Большая просьба привести пример.

19
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
08.06.2009, 09:10
код-то давай.
может распараллелено неправильно.
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
08.06.2009, 23:09
А с чего тут быть выигрышу в скорости? Переключение между потоками занимает процессорное время.Ну,на два ядра можно более-менее безболезненно распараллелить,но большее количество потоков и теоретически выигрыша не даст. Поправьте меня,если я не прав.

Именно поэтому некоторые вычисления переносят на графический процессор - видеокарту,проще говоря.Она просто создана для параллельных вычислений - в буквальном и переносном смысле.
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
09.06.2009, 23:05
XuTPbIu_MuHTAu, не морочь людям голову
0
Администратор
 Аватар для mik-a-el
87888 / 53209 / 249
Регистрация: 10.04.2006
Сообщений: 13,767
09.06.2009, 23:17
Цитата Сообщение от tor887 Посмотреть сообщение
Проблема в том, что нет выигрыша во времени рассчёта.
А что, он разве должен быть? Код покажите, обоих вариантов.
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
09.06.2009, 23:20
я так понимаю, что в случае 2х потоков, каждый должен в 2 разща меньше считать, ес ли код правильный, нее?
но код, видимо, неправильный
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 23:27
Цитата Сообщение от tor887 Посмотреть сообщение
При этом в однопотчном случае проц. загружен на 50%, а в многопоточном на 100% (не особо зависит от количества потоков). Проц. хороший Intel 2-х ядерный 3.. Гига на ядро.
А замер времени как делаешь? Грубо говоря секундомером измеряешь время прохождения задачи? Просто цифры 50 и 100% говорят, что многопоточный вариант по крайней мере работает в распараллеленном режиме (50% означает, что у тебя загружено только одно ядро, 100% - оба ядра). Если реальнов ермя исполнения не отличается, то проблемы могут быть с синхронизацией. Или потоки слишком много работают на холостом ходу. Без исходников, конечно же, врядли тебе кто-то что-то конкретное скажет
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
10.06.2009, 01:22
Цитата Сообщение от Lolcht0 Посмотреть сообщение
XuTPbIu_MuHTAu, не морочь людям голову
Хмммм? Если говоришь,что человек не прав - говори где.Так у тебя слова на ветер,как на базаре..
0
7 / 7 / 1
Регистрация: 01.03.2009
Сообщений: 33
10.06.2009, 17:28
Вообще выйгрыш может и получится, только на другой машине! При использовании распаралеливания нужно учитывать внутреннюю реализацию, а не поверхностую... Один из факторов - это КЭШ-память... Если она общая, то это одно дело... Если нет - то прироста в производительности и скорости выполнения может вообще не быть
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.06.2009, 18:03
Цитата Сообщение от AndruL Посмотреть сообщение
Вообще выйгрыш может и получится, только на другой машине! При использовании распаралеливания нужно учитывать внутреннюю реализацию, а не поверхностую... Один из факторов - это КЭШ-память... Если она общая, то это одно дело... Если нет - то прироста в производительности и скорости выполнения может вообще не быть
Если бы было так, то это нафиг бы никому не нужно было. Кому нужна программа, которая только на одной машине нормально работает?
0
7 / 7 / 1
Регистрация: 01.03.2009
Сообщений: 33
11.06.2009, 16:16
Хорошо, я выражусь небольшим примером.
Допустим есть программа с двумя потоками, есть один массив, один из потоков работает с чётными элементами, другой - с нечётными.
Напрямую из оперативки с массивом процессор работать не может, будет загружать в КЭШ, но и один элемент загрузить в КЭШ невозможно, допустим загружается 4 элемента!
Так вот, если КЭШ различный, то при обращении к первому элементу массива будет выполняться первый поток, первый процессор (из двух) задействуется и загрузит сразу 4 элемента массива в свой КЭШ, второй процесс в это время готов обработать второй элемент, но он не может сделать это пока первые четыре не освоболит первый процессор... После освобождения второй процесс будет делать тоже самое, что и первый ранее! Получается огромный простой!
И с данной задачей намного быстрее справятся либо два процессора с общим КЭШем или вообще машина с одним процессором.
Поэтому нельзя однозначно говорить о скорости работы многопоточного приложения на компьютерах с различной архитектурой!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
11.06.2009, 16:37
> Поэтому нельзя однозначно говорить о скорости работы
> многопоточного приложения на компьютерах с различной архитектурой!

Когда говорят о многопотомчном приложении, то говорят о нормальнонаписанной программе. "Нормальная" - это когда потоки практически всё время работают с независимыми данными. Два потока над одним массивом - так вообще-то не делают. Потому как наиболее узкое место многопроцессорных машин - работа с общей памятью. Тут геморрой как на уровне контроллера памяти (который должен обслуживать несколько процессоров и перупорядочивать запросы в память), так и на уровне кэшей - наворачивается здоровенная штука,обеспечиващая когенернтность кэшей между всеми процессорами. И в итоге ты делаешь программу, которая работает в режиме, наиболее неудобном дла аппаратуры.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
11.06.2009, 16:47
Цитата Сообщение от Evg Посмотреть сообщение
Два потока над одним массивом - так вообще-то не делают.
позвольте с вами не согласится.
не только делают, но и Intel официально рекомендует именно так писать приложения: запускать несколько экземпляров одного и того-же кода.
обсуждать не берусь, но такова официальная рекомендация.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
11.06.2009, 16:54
Цитата Сообщение от Patch Посмотреть сообщение
позвольте с вами не согласится.
не только делают, но и Intel официально рекомендует именно так писать приложения: запускать несколько экземпляров одного и того-же кода.
обсуждать не берусь, но такова официальная рекомендация.
Э... несколько экземпляров одного и того же кода - это несколько другое. Хотя при такой расплавчатой формулировке тут сложно понять. А есть ссылка на официальную рекомендацию или хотя бы выдержка?
0
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
12.06.2009, 23:17  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
А замер времени как делаешь? Грубо говоря секундомером измеряешь время прохождения задачи? Просто цифры 50 и 100% говорят, что многопоточный вариант по крайней мере работает в распараллеленном режиме (50% означает, что у тебя загружено только одно ядро, 100% - оба ядра). Если реальнов ермя исполнения не отличается, то проблемы могут быть с синхронизацией. Или потоки слишком много работают на холостом ходу. Без исходников, конечно же, врядли тебе кто-то что-то конкретное скажет
Время контролирую с помочью счётчика. Нет распараллеливание точно есть - проверял трассировкой. Блин, исходники попозже выложу - не на работе щас.

Добавлено через 2 минуты 24 секунды
Цитата Сообщение от AndruL Посмотреть сообщение
Вообще выйгрыш может и получится, только на другой машине! При использовании распаралеливания нужно учитывать внутреннюю реализацию, а не поверхностую... Один из факторов - это КЭШ-память... Если она общая, то это одно дело... Если нет - то прироста в производительности и скорости выполнения может вообще не быть
Насколько я понял общая на оба ядра? Как узнать?..

Добавлено через 9 минут 26 секунд
Цитата Сообщение от Evg Посмотреть сообщение
> Поэтому нельзя однозначно говорить о скорости работы
> многопоточного приложения на компьютерах с различной архитектурой!

Когда говорят о многопотомчном приложении, то говорят о нормальнонаписанной программе. "Нормальная" - это когда потоки практически всё время работают с независимыми данными. Два потока над одним массивом - так вообще-то не делают. Потому как наиболее узкое место многопроцессорных машин - работа с общей памятью. Тут геморрой как на уровне контроллера памяти (который должен обслуживать несколько процессоров и перупорядочивать запросы в память), так и на уровне кэшей - наворачивается здоровенная штука,обеспечиващая когенернтность кэшей между всеми процессорами. И в итоге ты делаешь программу, которая работает в режиме, наиболее неудобном дла аппаратуры.
Как раз для этого в каждом потоке создаётся ОТДЕЛЬНЫЙ класс для рассчёта следующего элемента массива. Синхронизация же производится в том числе и на выходе из потока для правильной записи в итоговый массив данных. Т.е., например, 10 потоков одновременно ведут рассчёт, а затем поочерёдно записывают данные..
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
13.06.2009, 23:25
Цитата Сообщение от tor887 Посмотреть сообщение
Время контролирую с помочью счётчика
Счётчик чего? Тиков? И он мерит "чистое" количество или некий эквивалент прошедшего времени в абсолютном исчислении (с учётом всех системных задержек)

Цитата Сообщение от tor887 Посмотреть сообщение
Насколько я понял общая на оба ядра? Как узнать?..
Я не специалист, могу и ошибиться/напутать, но, по-моему, одной из причин в необходимости создания нескольких ядер на одном кристалле является общий кэш. Соотвественно, многоканальный контрлер частично памяти затаскивается на кристалл и упрощается, что позволяет работать двум ядрам на однопроцессорной материнской плате без дополнительного контроллера (на материнской плате)

Цитата Сообщение от tor887 Посмотреть сообщение
Синхронизация же производится в том числе и на выходе из потока для правильной записи в итоговый массив данных. Т.е., например, 10 потоков одновременно ведут рассчёт, а затем поочерёдно записывают данные..
А каково время расчёта данных, прежде, чем его записать. Потому как может получиться так, что два потока одновременно что-то посчитали, а время этого расчёта настолько маленькое, что совпадает с накладными расходами по обеспечению синхронизации для единственно записи
0
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
15.06.2009, 12:33  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Счётчик чего? Тиков? И он мерит "чистое" количество или некий эквивалент прошедшего времени в абсолютном исчислении (с учётом всех системных задержек)



Я не специалист, могу и ошибиться/напутать, но, по-моему, одной из причин в необходимости создания нескольких ядер на одном кристалле является общий кэш. Соотвественно, многоканальный контрлер частично памяти затаскивается на кристалл и упрощается, что позволяет работать двум ядрам на однопроцессорной материнской плате без дополнительного контроллера (на материнской плате)



А каково время расчёта данных, прежде, чем его записать. Потому как может получиться так, что два потока одновременно что-то посчитали, а время этого расчёта настолько маленькое, что совпадает с накладными расходами по обеспечению синхронизации для единственно записи
Счётчик тиков (миллисикунд). Понятно, что есть системные задержки, но когда время рассчёта скажем 5-10 мин, по моему не так приципиально.

А вот и исходник:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
UINT Thread_EPvsT( void* pParam  )
{
    //инициализация:
    CTreadsEP *ThEP                = static_cast<CTreadsEP*>(pParam);
    param_IntContact *param_In    = ThEP->s_param;
    int numTh                    = ThEP->i_numTh;
    double T                    = ThEP->m_Ttemp;
    CExtraCharacters *ECH        = new CExtraCharacters( param_In );
 
    
    SetEvent( Is_InitTh );        //инициализация закончена;
 
    //рассчёт:
    //TRACE("Th = %i;\n  ", numTh );
    SingleEP *singlEP = new SingleEP;
    //TRACE("after single;\n  " );
    //TRACE("перед calc;\n  " );
    ECH->Calc_ExParamFromT( *singlEP, T );
    
    //рассчёт закончен. Запись
    
    WaitForSingleObject( End_Thread[numTh - 1], INFINITE );
    //TRACE("после wait %i;\n  ", numTh );
    //TRACE("запись;\n  " );
    ThEP->s_ExtParam->vec_FbiT.push_back( singlEP->Fbi ); 
    ThEP->s_ExtParam->FbnT.push_back( singlEP->Fbn );
    ThEP->s_ExtParam->FbmT.push_back( singlEP->Fbm );
    ThEP->s_ExtParam->nT.push_back( singlEP->n );
    ThEP->s_ExtParam->vec_T.push_back( T );
    //TRACE("end запись;\n  " );
 
    //закрытие потока:
    delete ECH;
    delete singlEP;
 
    SetEvent( End_Thread[numTh] );
    ReleaseSemaphore(semaph,1,NULL)    ;
    //TRACE("End %i;\n  ", numTh );
 
    return 0;
}
//---------рассчёт завис. доп. параметров от Т:
void CTreadsEP::Calc_EPvsT( sExtraParametrs  &ExtParam,
                            const double &Tmin,    const double &Tmax,    const double &dT )
{
    //ExtParam
    double T = Tmin;
    int numT = (Tmax - Tmin) / dT + 1;
    //TRACE("NUM=%i;\n", numT);
 
    End_Thread.clear();
    End_Thread.push_back( CreateEvent(NULL, FALSE, TRUE, NULL) );
    for (int i = 1; i <=numT; i++)
    {
        End_Thread.push_back( CreateEvent(NULL, FALSE, FALSE, NULL) );
    }
 
    Is_InitTh    = CreateEvent(NULL, FALSE, FALSE, NULL);
    semaph        = CreateSemaphore( NULL, 30, 30, NULL );
 
    int j=1;
    for (int i = 1; i <=numT; i++ )
    {
        
 
        i_numTh = j;
        m_Ttemp = T;
        
        //огр. кол. потоков:
        WaitForSingleObject( semaph, INFINITE );
        //TRACE("после семафора;\n  ");
        CWinThread* myWinThread = AfxBeginThread( Thread_EPvsT, this,THREAD_PRIORITY_NORMAL );
        
        j++;
        //if ( j < 10) j++;
        //else j = 1;
        
        WaitForSingleObject( Is_InitTh, INFINITE );  //ждём инициализации предыдущего потока
        T+=dT;
 
    }
    
    WaitForSingleObject( End_Thread[numT], INFINITE );
    Sleep(1000);
 
    ExtParam = *s_ExtParam;
 
    End_Thread.clear();
    //TRACE("2;\n  ");
 
}
Вложения
Тип файла: doc код.doc (28.5 Кб, 18 просмотров)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.06.2009, 13:50
Когда пишешь какой-то исходник - пользуйся BB-кодами, а то читать невозможно

Я с трудом себе представляю, как это безобразие под виндами работает. Но одна вещь мне не совсем понятна. У тебя используется один семафор. При создании каждого потока идёт опрос этого семафора, который сбрасывается внутри потока. Т.е. получается, что ты поток создаёшь, а в основной задаче ждёшь его завершения. Так чтоли получается?

Добавлено через 3 минуты 38 секунд
Ну и лирическое отступление. Семафор - всё-таки средство синхронизации для разных процессов, которые не имеют общего ресурса кроме диска. Потоки имеют общую глобальную память, а потому для синхронизации потоков принято использовать mutex'ы - они и работают быстрее. т.к. для их поддержки не требуется вмешательство ОС, и диск не насилуют (на одном только обращении к диску теряется десятки, а то и сотни тысяч тактов)
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
15.06.2009, 20:25
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
49
50
51
52
53
54
55
56
57
58
59
60
...
CRITICAL_SECTION Crit;
InitializeCriticalSection(&Crit);
...
 
UINT Thread_EPvsT( void* pParam  )
{
    
    CTreadsEP *ThEP                = static_cast<CTreadsEP*>(pParam);
    param_IntContact *param_In     = ThEP->s_param;
    int numTh                      = ThEP->i_numTh;
    double T                       = ThEP->m_Ttemp;
    CExtraCharacters *ECH          = new CExtraCharacters( param_In );
    
     SetEvent( Is_InitTh );
  
    SingleEP *singlEP = new SingleEP;
    ECH->Calc_ExParamFromT( *singlEP, T );
 
    EnterCriticalSection(&Crit);
        ThEP->s_ExtParam->vec_FbiT.push_back( singlEP->Fbi ); 
        ThEP->s_ExtParam->FbnT.push_back( singlEP->Fbn );
        ThEP->s_ExtParam->FbmT.push_back( singlEP->Fbm );
        ThEP->s_ExtParam->nT.push_back( singlEP->n );
        ThEP->s_ExtParam->vec_T.push_back( T );
    LeaveCriticalSection(&Crit);
      
    delete ECH;
    delete singlEP;
 
    return 0;
}
 
 
void CTreadsEP::Calc_EPvsT( sExtraParametrs  &ExtParam,
                            const double &Tmin,    const double &Tmax,    const double &dT )
{
   
    double T = Tmin;
    int numT = (Tmax - Tmin) / dT + 1;
   
 
    End_Thread.clear();
        
    
    for (int i = 0; i <= 2/*количество ядер */; ++i )
    {      
        m_Ttemp = T;     
        CWinThread* myWinThread = AfxBeginThread( Thread_EPvsT, this,THREAD_PRIORITY_NORMAL );
        EndThread.push_back(myWinThread->m_hThread);
        WaitForSingleObject( Is_InitTh, INFINITE );        
        T+=dT;
    }
    
    WaitForMultipleObject( &(End_Thread[0]), End_Thread.size(), INFINITE );    
 
    ExtParam = *s_ExtParam;
    End_Thread.clear();    
 
}
0
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
24.06.2009, 21:28  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Когда пишешь какой-то исходник - пользуйся BB-кодами, а то читать невозможно

Я с трудом себе представляю, как это безобразие под виндами работает. Но одна вещь мне не совсем понятна. У тебя используется один семафор. При создании каждого потока идёт опрос этого семафора, который сбрасывается внутри потока. Т.е. получается, что ты поток создаёшь, а в основной задаче ждёшь его завершения. Так чтоли получается?

Добавлено через 3 минуты 38 секунд
Ну и лирическое отступление. Семафор - всё-таки средство синхронизации для разных процессов, которые не имеют общего ресурса кроме диска. Потоки имеют общую глобальную память, а потому для синхронизации потоков принято использовать mutex'ы - они и работают быстрее. т.к. для их поддержки не требуется вмешательство ОС, и диск не насилуют (на одном только обращении к диску теряется десятки, а то и сотни тысяч тактов)
Семафор мне показалось удобно использовать для ограничения количества одновременно работающих потоков (в коде - 30).

Добавлено через 18 минут 26 секунд
4 Alexandoros
Нелзя использовать CriticalSection, т.к. мне не просто надо запретить использовать ресурсы во время записи - очередное рассчитаное значение должно записываться только за предыдущим, т.е. i-ое - рассчитано, i+1 -ое ещё нет, а i+2 -ое, например, уже также рассчиталось (если объем вычислений упал), то i+2 -ое значение должно ждать рассчёта i+1 - го...
И я чёт не понял с главным циклом. У меня там было изменение главного параметра T (от Tmin до Tmax с шагом dT), а здесь, как вижу, цикл создания потоков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2009, 21:28
Помогаю со студенческими работами здесь

Обработка базы данных несколькими потоками
Пишу программу, которая обрабатывает базу данных, при том каждую строчку обрабатывает один поток. Вот код: HANDLE hThread; using...

Использование несколькими потоками одной функции
Есть вот такая функция для =которую выполняют рабочие потоки DWORD WINAPI ThreadFunc(void *pV) { Data* pD = (Data*)pV; int n,...

Синхронизации задач с несколькими потоками выполнения
Задание: Реализовать схему &quot;оповещения&quot; трех ожидающих потоков о помещении в очередь (произвольного формата) некоторого сообщения на основе...

Запись данных в файл несколькими потоками.
Как на Java реализовать запись в файл несколькими потоками? К примеру, имеется файл размером 3Мб, его содержимое копируется в другой файл...

Генерация случайных чисел несколькими потоками
необходимо реализовать генерацию случайных чисел с использованием нескольких потоков и выполнить минимаксную нормализацию ссь сделал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru