Вверх ↑
Этот топик читают: Гость
Ответов: 60
Рейтинг: 0
#1: 2020-10-07 15:35:32 ЛС | профиль | цитата
Здравствуйте. Подскажите пожалуйста, можно такое сделать или не получится, выполнить параллельные вычисления.
Чтобы одни вычисления начинались при окончании всех других вычислений.
Пример

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=1136
}
Add(For,2299397,1036,350)
{
IncludeEnd=1
link(onEvent,15807592:doCompare,[])
link(onStop,14060616:doCreate,[(1094,363)(1094,447)])
link(End,12663611:Var2,[])
}
Add(If_else,15807592,1169,350)
{
link(onTrue,2299397:doStop,[(1230,356)(1230,409)(1022,409)(1022,363)])
link(onFalse,5071433:doRead,[])
link(Op1,3157702:Var2,[(1175,338)(1131,338)])
link(Op2,12663611:Var3,[(1182,299)])
}
Add(If_else,7210001,525,336)
{
link(onTrue,9363:doStopFlag,[(567,342)(567,420)(260,420)(260,356)])
link(onFalse,4576585:doEvent1,[(576,349)(576,328)])
link(Op1,14716099:Var2,[(531,324)(496,324)])
link(Op2,7357616:Var2,[])
}
Add(Math,10123011,693,350)
{
OpType=7
Op2=2
link(onResult,3541718:doEvent1,[])
link(Op1,14590559:Var3,[(699,236)])
}
Add(GetDataEx,12663611,1043,294)
{
link(Data,14582755:Var3,[(857,294)(857,394)])
}
Add(For,1422687,1008,616)
{
IncludeEnd=1
link(onEvent,16689588:doCompare,[])
link(onStop,2697948:doCreate,[(1070,629)(1070,762)])
link(Start,14582755:Var2,[(1014,556)(776,556)])
link(End,3169758:Var2,[])
}
Add(If_else,16689588,1162,616)
{
link(onTrue,1422687:doStop,[(1223,622)(1223,675)(994,675)(994,629)])
link(onFalse,14880891:doRead,[])
link(Op1,15901818:Var2,[(1168,604)(1124,604)])
link(Op2,3169758:Var3,[(1175,579)])
}
Add(GetDataEx,3169758,1015,574)
{
link(Data,11676062:Var2,[])
}
Add(GetDataEx,14582755,770,389)
{
Angle=3
link(Data,10123011:Result,[(699,394)])
}
Add(GetDataEx,7357616,532,245)
{
link(Data,14590559:Var2,[])
}
Add(Button,13200831,119,329)
{
Left=15
Top=55
Caption="Расчет"
link(onClick,2452385:doEvent1,[])
}
Add(Edit,8564700,532,49)
{
Left=15
Top=15
}
Add(Math,12271454,1386,357)
{
link(onResult,5195423:doEvent1,[])
link(Op1,15354275:Var3,[(1392,345)(1263,345)(1263,411)])
link(Op2,5955211:Var2,[(1399,345)(1437,345)(1437,401)(1525,401)])
}
Add(Memory,7185836,1519,266)
{
Default=Real(0)
}
Add(Memo,3567889,1680,364)
{
Left=85
Top=10
Width=325
Height=225
ScrollBars=3
}
Add(Math,4527431,1442,623)
{
link(onResult,8729294:doEvent1,[])
link(Op1,11608567:Var3,[(1448,611)(1288,611)(1288,705)])
link(Op2,13697432:Var2,[(1455,611)(1493,611)(1493,667)(1574,667)])
}
Add(Memory,7447193,1568,553)
{
Default=Real(0)
}
Add(Memo,6565509,1694,630)
{
Left=430
Top=10
Width=325
Height=225
ScrollBars=3
}
Add(Hub,4576585,595,322)
{
OutCount=4
link(onEvent1,7185836:doClear,[(987,328)(987,279)])
link(onEvent2,7447193:doClear,[(987,335)(987,566)])
link(onEvent3,8972221:doClear,[(1050,342)(1050,776)])
link(onEvent4,10123011:doOperation,[(651,349)(651,356)])
}
Add(Hub,5195423,1449,357)
{
OutCount=3
link(onEvent1,7185836:doValue,[(1490,363)(1490,272)])
link(onEvent2,2301175:doValue,[(1533,370)(1533,349)])
link(onEvent3,7093707:doWrite,[(1501,377)(1501,440)])
}
Add(Memory,2301175,1603,343)
{
Point(Data)
link(onData,3567889:doAdd,[(1657,349)(1657,370)])
link(Data,7783589:Var3,[(1609,334)])
}
Add(GetDataEx,7783589,1519,329)
{
link(Data,7185836:Value,[])
}
Add(Hub,8729294,1505,623)
{
OutCount=3
link(onEvent1,7447193:doValue,[(1548,629)(1548,559)])
link(onEvent2,9121903:doValue,[(1571,636)(1571,615)])
link(onEvent3,12926802:doWrite,[(1547,643)(1547,706)])
}
Add(Memory,9121903,1624,609)
{
Point(Data)
link(onData,6565509:doAdd,[(1675,615)(1675,636)])
link(Data,10293478:Var3,[(1630,600)])
}
Add(GetDataEx,10293478,1568,595)
{
link(Data,7447193:Value,[])
}
Add(Math,10790089,350,336)
{
Op2=1
ResultType=0
link(onResult,6508325:doValue,[])
link(Op1,13251432:Var1,[(356,324)(384,324)(384,415)])
}
Add(Memory,6508325,406,336)
{
Default=Integer(-1)
link(onData,7210001:doCompare,[])
}
Add(MutexThread,15746545,882,350)
{
Delay=1
FastStop=0
OneWaitSyncExec=0
Point(doStopFlag)
link(onExec,2299397:doFor,[])
}
Add(MutexThread,7438655,882,616)
{
Delay=1
FastStop=0
OneWaitSyncExec=0
Point(doStopFlag)
link(onExec,1422687:doFor,[])
}
Add(MutexThread,9363,280,336)
{
Delay=1
OneWaitSyncExec=0
Point(doStopFlag)
link(onExec,10790089:doOperation,[])
}
Add(Hub,3541718,756,350)
{
OutCount=3
link(onEvent1,15746545:doStart,[])
link(onEvent2,7438655:doStart,[(826,363)(826,622)])
link(onEvent3,5500687:doWait,[(814,370)(814,839)])
}
Add(Matrix,12051191,910,84)
{
MatrixType=1
Point(Size)
link(Size,16562372:Result,[(916,56)(755,56)(755,198)(594,198)])
}
Add(Hub,2452385,210,329)
{
link(onEvent1,15381342:doEvent1,[(254,335)(254,160)])
link(onEvent2,9363:doStart,[])
}
Add(Math,16562372,588,154)
{
OpType=2
Op2=65537
ResultType=0
link(onResult,12051191:doSize,[(765,160)(765,90)])
link(Op1,16268648:Var3,[(594,124)])
}
Add(GetDataEx,16268648,532,119)
{
link(Data,8564700:Text,[])
}
Add(Hub,15381342,448,154)
{
link(onEvent1,16562372:doOperation,[])
link(onEvent2,3597073:doWork2,[(686,167)(686,97)])
}
Add(MatrixRW,5071433,1253,357)
{
link(onRead,11549611:doValue,[])
link(Matrix,1890957:Var2,[])
link(X,6318628:Var2,[])
link(Y,970361:Var2,[])
}
Add(Memory,11549611,1309,357)
{
link(onData,12271454:doOperation,[])
}
Add(MatrixRW,7093707,1540,427)
{
link(Matrix,16261328:Var2,[])
link(Value,5955211:Var3,[(1553,348)])
link(X,6318628:Var3,[(1560,341)])
link(Y,970361:Var3,[(1567,320)])
}
Add(GetDataEx,4154543,1253,203)
{
link(Data,12051191:Matrix,[(1259,124)(916,124)])
}
Add(GetDataEx,5955211,1519,343)
{
link(Data,7783589:Var2,[])
}
Add(GetDataEx,14716099,490,427)
{
Angle=2
link(Data,13915104:Var3,[(496,444)])
}
Add(MatrixRW,14880891,1302,623)
{
link(onRead,14655029:doValue,[])
link(Matrix,12023022:Var2,[])
link(X,9504770:Var2,[])
link(Y,15029965:Var2,[])
}
Add(Memory,14655029,1358,623)
{
link(onData,4527431:doOperation,[])
}
Add(GetDataEx,1890957,1253,287)
{
link(Data,4154543:Var2,[])
}
Add(GetDataEx,3157702,1125,392)
{
Angle=2
link(Data,15354275:Var2,[])
}
Add(GetDataEx,15901818,1118,679)
{
Angle=2
link(Data,11608567:Var2,[])
}
Add(GetDataEx,13915104,476,439)
{
Angle=3
link(Data,2908886:Var3,[])
}
Add(MatrixRW,12926802,1575,693)
{
link(Matrix,16261328:Var3,[(1581,250)])
link(Value,13697432:Var3,[(1588,621)])
link(X,9504770:Var3,[(1595,607)])
link(Y,15029965:Var3,[(1602,593)])
}
Add(GetDataEx,16261328,1540,245)
{
link(Data,4154543:Var3,[(1546,208)])
}
Add(GetDataEx,13697432,1568,616)
{
link(Data,10293478:Var2,[])
}
Add(GetDataEx,6318628,1267,336)
{
link(Data,14716099:Var3,[(1273,321)(890,321)(890,432)])
}
Add(GetDataEx,9504770,1316,602)
{
link(Data,13915104:Var2,[(1322,535)(482,535)])
}
Add(Events,14060616,1120,441)
{
Name="Event1"
}
Add(WaitMultiple,5500687,994,833)
{
Count=2
link(onWait,9245367:doFor,[])
link(Handle1,14060616:ObjHandle,[(1000,702)(1126,702)])
link(Handle2,2697948:ObjHandle,[(1007,811)(1105,811)])
}
Add(Events,2697948,1099,756)
{
Name="Event2"
}
Add(GetDataEx,13251432,392,410)
{
Angle=1
link(Data,6508325:Value,[(412,415)])
}
Add(GetDataEx,14590559,532,231)
{
link(Data,16268648:Var2,[])
}
Add(GetDataEx,970361,1274,315)
{
link(Data,3157702:Var3,[(1280,307)(1203,307)(1203,397)])
}
Add(GetDataEx,15029965,1323,588)
{
link(Data,15901818:Var3,[(1329,575)(1224,575)(1224,684)])
}
Add(For,9245367,1141,833)
{
IncludeEnd=1
link(onEvent,11661528:doRead,[])
link(End,11676062:Var3,[(1154,544)])
}
Add(GetDataEx,11676062,1015,539)
{
link(Data,7357616:Var3,[(1021,250)])
}
Add(Math,12256453,1365,833)
{
link(onResult,973046:doEvent1,[])
link(Op1,12411172:Value,[(1371,821)(1343,821)(1343,877)(1287,877)])
link(Op2,15289383:Var2,[(1378,821)(1416,821)(1416,877)(1497,877)])
}
Add(Memory,8972221,1491,763)
{
Default=Real(0)
}
Add(Memo,6106777,1617,840)
{
Left=775
Top=10
Width=325
Height=225
ScrollBars=3
}
Add(Hub,973046,1428,833)
{
link(onEvent1,8972221:doValue,[(1471,839)(1471,769)])
link(onEvent2,976171:doValue,[(1494,846)(1494,825)])
}
Add(Memory,976171,1547,819)
{
Point(Data)
link(onData,6106777:doAdd,[(1598,825)(1598,846)])
link(Data,15289383:Var3,[(1553,810)])
}
Add(GetDataEx,15289383,1491,805)
{
link(Data,8972221:Value,[])
}
Add(MatrixRW,11661528,1225,833)
{
link(onRead,12411172:doValue,[])
link(Matrix,12023022:Var1,[(1231,544)])
link(X,2908886:Var2,[(1245,630)(426,630)])
link(Y,9245367:Position,[(1252,792)(1200,792)(1200,877)(1147,877)])
}
Add(Memory,12411172,1281,833)
{
link(onData,12256453:doOperation,[])
}
Add(GetDataEx,12023022,1302,539)
{
link(Data,1890957:Var3,[(1308,292)])
}
Add(GetDataEx,2908886,420,439)
{
Angle=3
link(Data,13251432:Var2,[(398,444)])
}
Add(GetDataEx,15354275,1125,406)
{
Angle=2
link(Data,2299397:Position,[(1131,418)(1042,418)])
}
Add(GetDataEx,11608567,1118,700)
{
Angle=2
link(Data,1422687:Position,[(1124,714)(1014,714)])
}
Add(Button,875331,1295,140)
{
Left=15
Top=85
Caption="Очистить"
link(onClick,4824629:doEvent1,[])
}
Add(Hub,4824629,1365,140)
{
OutCount=4
link(onEvent1,3567889:doClear,[(1529,146)(1529,377)])
link(onEvent2,6565509:doClear,[(1537,153)(1537,643)])
link(onEvent3,6106777:doClear,[(1498,160)(1498,853)])
link(onEvent4,3597073:doWork3,[(1391,167)(1391,133)(886,133)])
}
Add(HubEx,3597073,882,91)
{
link(onEvent,12051191:doClear,[])
}

карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4621
Рейтинг: 746
#2: 2020-10-07 15:56:56 ЛС | профиль | цитата
Мне сложно разобраться в схеме (загружен). Возьми схему "HiAsm\Elements\Delphi\Example\System\Test Wait Multiple Object (Events).sha", вместо Sleep поставь свои вычисления и пробуй.
карма: 26

0
Ответов: 60
Рейтинг: 0
#3: 2020-10-07 16:07:08 ЛС | профиль | цитата
Если использовать потоки, то будут задействованы все ядра процессора по возможности? Или все потоки будет считать только одно ядро?

Редактировалось 1 раз(а), последний 2020-10-07 16:08:23
карма: 1

0
Ответов: 8886
Рейтинг: 823
#4: 2020-10-07 16:48:00 ЛС | профиль | цитата
Gik писал(а):
параллельные вычисления...Чтобы одни вычисления начинались при окончании всех других вычислений

Это вы обозначили ПОСЛЕДОВАТЕЛЬНЫЕ вычисления
карма: 19

0
Ответов: 4621
Рейтинг: 746
#5: 2020-10-07 16:53:59 ЛС | профиль | цитата
Gik писал(а):
Если использовать потоки, то будут задействованы все ядра процессора по возможности?
Да.
карма: 26

0
Ответов: 60
Рейтинг: 0
#6: 2020-10-07 17:16:43 ЛС | профиль | цитата
Леонид,все другие вычисления должны выполняться параллельно. У меня почему-то все вычисления выполняются на одном ядре. Может они на нескольких, но если смотреть в процентах, то как одно используется..
карма: 1

0
Ответов: 4621
Рейтинг: 746
#7: 2020-10-07 17:27:25 ЛС | профиль | цитата
Запусти ту оригинальную схему что я назвал - Sleep работает в виде нагрузки. Посмотри загрузку ядер.
карма: 26

0
Ответов: 60
Рейтинг: 0
#8: 2020-10-07 18:31:45 ЛС | профиль | цитата
Да в оригинальной схеме каждый поток выполняется на своем отдельном ядре.

Редактировалось 1 раз(а), последний 2020-10-07 18:32:23
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#9: 2020-10-08 12:41:04 ЛС | профиль | цитата
Мимо проходил и понял откуда родятся программы из 13000 компонент.
Лишний Memory
IF_Else для For (в этом случае) нужен , как зайцу стоп-сигнал
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 60
Рейтинг: 0
#10: 2020-10-08 13:13:09 ЛС | профиль | цитата
Да лишний в этой программе. Взял эту схему из другой, в ней между for и if стояли вычисления, их удалил.
карма: 1

0
Ответов: 60
Рейтинг: 0
#11: 2020-10-08 17:50:33 ЛС | профиль | цитата
Получается, если к sleep добавить расчеты в оригинальную схему, то sleep выполняется на нескольких ядрах, а расчеты все равно на одном.

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=971
Height=384
Caption="Wait for Multiple Objects"
Position=1
link(onCreate,13804482:doEvent1,[])
}
Add(Button,3342741,280,112)
{
Left=70
Top=15
Width=115
Caption="Start"
Data=String(ABCDEF)
link(onClick,1818191:doEvent1,[])
}
Add(Memo,13572209,1386,126)
{
Left=30
Top=45
Width=210
Height=275
ScrollBars=3
}
Add(Thread,9400599,441,112)
{
Delay=0
FastStop=0
link(onExec,8425095:doEvent1,[])
}
Add(Hub,8425095,490,112)
{
link(onEvent1,904911:doData,[(518,118)(518,76)])
link(onEvent2,3421083:doSleepMks,[(515,125)(515,181)])
}
Add(DoData,904911,532,70)
{
Data=String(Thread 1 started)
link(onEventData,16034504:doWork1,[(1306,76)])
}
Add(Hub,1818191,329,112)
{
OutCount=4
link(onEvent1,9400599:doStart,[])
link(onEvent2,2883773:doStart,[(392,125)(392,321)])
link(onEvent3,3610323:doStart,[(378,132)(378,496)])
link(onEvent4,14099663:doStart,[(363,139)(363,706)])
}
Add(Thread,2883773,441,315)
{
Delay=0
FastStop=0
link(onExec,10699036:doEvent1,[])
}
Add(Hub,10699036,490,315)
{
link(onEvent1,7555254:doData,[(518,321)(518,279)])
link(onEvent2,2324382:doSleepMks,[(623,328)(623,363)])
}
Add(DoData,7555254,532,273)
{
Data=String(Thread 2 started)
link(onEventData,12965505:doWork1,[(1257,279)])
}
Add(Thread,3610323,448,490)
{
Delay=0
FastStop=0
link(onExec,7190319:doEvent1,[])
}
Add(Hub,7190319,497,490)
{
link(onEvent1,15436954:doData,[(525,496)(525,454)])
link(onEvent2,10619522:doSleepMks,[(616,503)(616,524)])
}
Add(DoData,15436954,539,448)
{
Data=String(Thread 3 started)
link(onEventData,16526341:doWork1,[(1236,454)])
}
Add(LineBreakEx,12358704,917,259)
{
Caption="H1"
Type=3
link(_Data,5953648:ObjHandle,[])
}
Add(LineBreakEx,11815744,903,427)
{
Caption="H2"
Type=3
link(_Data,9593067:ObjHandle,[])
}
Add(LineBreakEx,16371797,896,602)
{
Caption="H3"
Type=3
link(_Data,13923820:ObjHandle,[])
}
Add(LineBreakEx,4797077,588,630)
{
Caption="H1"
Type=2
}
Add(LineBreakEx,12999161,595,651)
{
Caption="H2"
Type=2
}
Add(LineBreakEx,777119,602,672)
{
Caption="H3"
Type=2
}
Add(WaitMultiple,7791455,588,700)
{
Count=3
link(onWait,12294071:doData,[])
link(Handle1,4797077:getVar,[])
link(Handle2,12999161:getVar,[])
link(Handle3,777119:getVar,[])
}
Add(DoData,12294071,658,700)
{
Data=String(ALL THREADS FINISHED)
link(onEventData,13345728:doAdd,[])
}
Add(Thread,14099663,490,700)
{
Delay=0
FastStop=0
link(onExec,7791455:doWait,[])
}
Add(Events,9593067,903,385)
{
Name=""
ManualReset=1
}
Add(Events,5953648,917,217)
{
Name=""
ManualReset=1
}
Add(Events,13923820,896,560)
{
Name=""
ManualReset=1
}
Add(LineBreak,16210513,875,217)
{
Caption="cr1"
link(Out,5953648:doCreate,[])
Primary=[3562615,-721,-98]
}
Add(LineBreak,14877521,854,385)
{
Caption="cr2"
link(Out,9593067:doCreate,[])
Primary=[11905685,-728,-259]
}
Add(LineBreak,9131974,854,560)
{
Caption="cr3"
link(Out,13923820:doCreate,[])
Primary=[13581513,-700,-427]
}
Add(Hub,13804482,91,119)
{
OutCount=3
link(onEvent1,3562615:In,[])
link(onEvent2,11905685:In,[])
link(onEvent3,13581513:In,[])
}
Add(For,9245367,770,175)
{
IncludeEnd=1
link(onEvent,12256453:doOperation,[])
link(onStop,5953648:doSet,[(860,188)(860,230)])
link(End,5403546:Var2,[])
}
Add(Math,12256453,994,175)
{
link(onResult,976171:doValue,[(1123,181)(1123,167)])
link(Op1,9245367:Position,[(1000,163)(888,163)(888,219)(776,219)])
link(Op2,976171:Value,[(1007,163)(1095,163)(1095,205)(1182,205)])
}
Add(Memory,976171,1176,161)
{
Point(Data)
link(onData,16034504:doWork2,[(1248,167)(1248,132)])
}
Add(Edit,8564700,777,28)
{
Left=15
Top=15
}
Add(For,15157217,742,357)
{
IncludeEnd=1
link(onEvent,10619049:doOperation,[])
link(onStop,9593067:doSet,[(838,370)(838,398)])
link(End,151197:Var2,[])
}
Add(Math,10619049,966,357)
{
link(onResult,12718577:doValue,[(1095,363)(1095,349)])
link(Op1,15157217:Position,[(972,345)(860,345)(860,401)(748,401)])
link(Op2,12718577:Value,[(979,345)(1067,345)(1067,387)(1154,387)])
}
Add(Memory,12718577,1148,343)
{
Point(Data)
link(onData,12965505:doWork2,[(1218,349)(1218,293)])
}
Add(GetDataEx,5403546,777,140)
{
link(Data,8564700:Text,[])
}
Add(For,6553458,721,518)
{
IncludeEnd=1
link(onEvent,16677086:doOperation,[])
link(onStop,13923820:doSet,[(825,531)(825,573)])
link(End,151197:Var1,[(734,306)])
}
Add(Math,16677086,945,518)
{
link(onResult,13916257:doValue,[(1074,524)(1074,510)])
link(Op1,6553458:Position,[(951,506)(839,506)(839,562)(727,562)])
link(Op2,13916257:Value,[(958,506)(1046,506)(1046,548)(1133,548)])
}
Add(Memory,13916257,1127,504)
{
Point(Data)
link(onData,16526341:doWork2,[(1191,510)(1191,503)])
}
Add(GetDataEx,151197,749,301)
{
link(Data,5403546:Var1,[(755,145)])
}
Add(Memo,4980667,1316,287)
{
Left=255
Top=45
Width=215
Height=275
ScrollBars=3
}
Add(Memo,4524147,1274,497)
{
Left=480
Top=45
Width=230
Height=275
ScrollBars=3
}
Add(Memo,13345728,798,700)
{
Left=725
Top=45
Width=220
Height=275
ScrollBars=3
}
Add(HubEx,16034504,1302,126)
{
link(onEvent,13572209:doAdd,[])
}
Add(HubEx,12965505,1253,287)
{
link(onEvent,4980667:doAdd,[])
}
Add(HubEx,16526341,1232,497)
{
link(onEvent,4524147:doAdd,[])
}
Add(Sleep,3421083,616,175)
{
Delay=20000000
link(onSleep,9245367:doFor,[])
}
Add(Sleep,2324382,644,357)
{
Delay=20000000
link(onSleep,15157217:doFor,[])
}
Add(Sleep,10619522,630,518)
{
Delay=20000000
link(onSleep,6553458:doFor,[])
}

карма: 1

0
Ответов: 4621
Рейтинг: 746
#12: 2020-10-09 12:49:22 ЛС | профиль | цитата
Это зависит от того сколько времени выполняются твои расчеты. Если несколько секунд - то как ты вообще успеваешь понять на каких ядрах они исполняются?
Убери Sleep, сделай такие расчеты чтобы каждый поток выполнялся по секунд 10 - тогда увидишь. Например, на выходе For поставь компонент EnCrypt, который шифрует какую-то строку. Поставь количество циклов, скажем, 1000000.
карма: 26

0
Ответов: 60
Рейтинг: 0
#13: 2020-10-09 13:17:11 ЛС | профиль | цитата
Не знаю, если ввести в моей программе 10000, то она считает несколько минут, все равно на одном ядре. Может разделение на ядра зависит от количества используемых ресурсов, а не от времени, хотя это странно, вроде параллельные должны выполняться быстрее последовательных, независимо от времени выполнения. Могу только догадываться.

Редактировалось 3 раз(а), последний 2020-10-09 13:24:45
карма: 1

0
Ответов: 4621
Рейтинг: 746
#14: 2020-10-09 13:32:20 ЛС | профиль | цитата
Если есть отображение процесса вычислений в оконных элементах или постоянное считывание данных, то там может не быть параллельности. Также может быть неоптимальная синхронизация потоков (я не разбираюсь в принципе функционирования использованного тобой MutexThread).

Редактировалось 4 раз(а), последний 2020-10-09 13:34:48
карма: 26

0
Ответов: 60
Рейтинг: 0
#15: 2020-10-09 14:04:05 ЛС | профиль | цитата
Не использую в программе синхронизацию, вставил схему из другой программы. В программе может не быть параллельности, если все ядра используют одну память? В другой программе ход процесса вычислений показывается с помощью прогрессбара, поэтому тоже может не быть параллельности?
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)