Re: Počet vláken

Radek Sztwiorok sztrad na gmail.com
Čtvrtek Prosinec 10 11:31:33 CET 2020


Zkuste kouknout sem,mozna pomuze
https://forum.lazarus.freepascal.org/index.php?topic=26441.0

Na modbus pouzivate pascalscada?

čt 10. 12. 2020 v 11:25 odesílatel Martin Záruba <swz na volny.cz> napsal:

> No já to vlastně takto předělal z verze, kdy bylo jedno vlákno. Ono to v
> podstatě funguje tak, že se připojí klient (PLC). Server vyhodnotí, že
> je to oprávněné připojení a pak se již stará o komunikaci. Tím pádem PLC
> může být za firewallem a nemusí mít veřejnou IP. Problém je v tom, že
> komunikace běží na pomalém modbusu, takže naprostá většina doby je
> čekání na data. Pokud to jsou vlákna, tak to není problém, protože se o
> to stará systém a i na prastarém procesoru je vytížení zanedbatelné.
> Jenže nedovedu si představit, jak se jedno vlákno bude starat o
> komunikaci s několika zcela asynchronně běžícími procesy.
>
> Jinak tak, jak jste to popsal to funguje, jenže jekmile naslouchací
> vlákno identifikuje požadavek a spustí to komunikační, dál se o to
> nestará. To je mi jasné, jenže to komunikační vlákno vlastně nikdy
> nekončí, protože je to smyčka, která čte data (nebo i zapisuje) z PLC
> tak rychle, jak to modbus zvládne. Pokud spojení spadne, vlákno se
> ukončí a PLC se pokusí přihlásit znovu a zase dostane vlákno. Tak mě
> nenapadá, jak to udělat jinak.
>
> Martin Záruba
>
> Dne 10.12.2020 v 7:33 Marek Sembol napsal(a):
> > Zdravim,
> > Lazara neznam ani omylem, ale: Ono chyba 'out of memory' nemusi nutne
> > znamenat, ze dosla pamet obecne. Mnohdy ma program/system vyhrazenou
> > statickou (pevne delky) tabulku na nejake prostredky pokud nema volny
> > slot - vyhodi out-of-memory (a ma pravdu-dosla mu vyhrazena pamet) Na
> > podobny problem jsem narazil jednou s .NET (tehdy jeste 3.5) Program
> > pomerne intenzivne (az agresivne) vyuzival thready z ThreadPool.
> > Problem byl, ze tam byl taky pevny strop - a jeste zavisly na poctu
> > jader. Tusim 256/jadro.
> > Obecna rada - ono stejne neni pro system moc zdrave drzet si stabilne
> > tolik thready. Kazda sranda (thread) neco stoji. Ten thread dokonce
> > relativne dost.
> > Takze moje rada vas nepotesi - predelat strukturu programu, aby
> > nepotreboval tolik threadu. Neco jako jeden thread na naslouchani a v
> > pripade prichoziho pozadavku, si docasne vytvorit (nejlepe pouzit z
> > thread pool, pokud lazarus ma, jinak si napsat svuj. Tvoreni thredu je
> > hodne drahe) threadik na zpracovani pozadavku a pak ho zas hezky
> > vratit/uklidit.
> > BR,
> > Marek
> >
> > On Thu, Dec 10, 2020 at 6:51 AM Martin Záruba <swz na volny.cz
> > <mailto:swz na volny.cz>> wrote:
> >
> >     Mám v prostředí Lazarus program, který po připojení přes TCP/IP
> >     založí
> >     vlákno a provede příslušnou akci. Pokud ale počet vláken dosáhne
> >     hodnoty
> >     115 dostanu zprávu
> >
> >     Project xxx vyvolal výjímku třídy ´EThread´ se zprávou:
> >
> >     Thread creation error: K provedení tohoto příkazu není dost
> >     paměťových
> >     prostředků
> >
> >
> >     Jenže ono to nezáleží na paměti. Na různých PC se to chová stejně.
> >     Zjevně někde přetečou nějaké tabulky. Ale kde?
> >
> >     --
> >
> >     Martin Záruba
> >
> >     _______________________________________________
> >     HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
> >     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
> >     http://list.hw.cz/mailman/listinfo/hw-list
> >     <http://list.hw.cz/mailman/listinfo/hw-list>
> >
> >
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20201210/bbb1d51f/attachment.html>


Další informace o konferenci Hw-list