Promotic

Sequencer - karta objektu PmaSequencer

Popis:
Karta slouží pro nastavení základních parametrů objektu PmaSequencer.
Konfigurátory:
Maximální počet položekMaximální počet položek, které mohou v objektu PmaSequencer najednou čekat.
Tento konfigurátor nastaví počáteční hodnotu vlastnosti MaxSize.
Hodnota -1 představuje neomezené množství položek. Omezení je vhodné pro zabránění projektantských chyb, kdy by počet čekajících položek mohl růst nade všechny meze.
Typ spouštění položekSmysl timeoutu. Timeout se zadává v metodě Add.
0 = položky se spouští nezávisle, každá podle svého timeoutu - To znamená, že timeout je doba mezi zařazením položky (metodou Add) a jejím spuštěním (událostí onStep).
1 = položky se spouští postupně, timeout je zpoždění mezi nimi - To znamená, že timeout je doba mezi uvolněním předchozí položky a spuštěním následující položky.
Pokud při volání metody Add není v objektu žádná čekající položka a poslední položka byla spuštěna před větší dobou než je timeout, pak bude tato nová položka spuštěna okamžitě.
Použité vlákno (thread)Určuje vlákno (thread), ve kterém bude spouštěn skript události onStep. Volba "nové pracovní vlákno" znamená, že tento objekt PmaSequencer si vytvoří nové vlákno dané priority po spuštění aplikace. Viz také: Jak spouštět vybrané skripty v jiném vlákně (threadu).
Main = hlavní vlákno aplikace, ve kterém standardně běží i ostatní skripty
Normal = nové pracovní vlákno normální priority
BelowNormal = nové pracovní vlákno nižší priority
AboveNormal = nové pracovní vlákno vyšší priority.
Timeout při zastavování před ukončením pracovního vlákna [s]Platí pouze pro nové pracovní vlákno! Časový limit (timeout), po který systém při zastavování aplikace čeká na ukončení právě prováděné položky, po kterém dojde k násilnému ukončení pracovního vlákna (násilné ukončení je však nebezpečné a nežádoucí). Pokud se žádná položka právě neprovádí, nebo se právě prováděná položka stihla regulérně ukončit v daném časovém limitu, pak se pracovní vlákno ukončí regulérně (případné čekající položky ve frontě se ignorují). Pracovní vlákno lze při zastavování aplikace regulérně (bezpečně) zastavit pouze pokud se právě neprovádí žádná položka. Pokud se právě provádí, pak je nutno chvíli počkat, až se ukončí. Aby se nečekalo příliš dlouho (pokud došlo k nečekaně dlouhému provádění položky) existuje časový limit, po který bude systém čekat, než ukončí pracovní vlákno násilně.
Upozornění! Za normálních okolností by projektant měl zajistit, aby nedocházelo k násilnému ukončení požadavků (pracovního vlákna). Toho lze dosáhnout nejjednodušeji tím, že se nastaví dostatečný časový limit i pro nejdelší požadavek. Časově náročný požadavek lze často zkrátit tak, že při zastavení aplikace se nastaví uživatelská globální proměnná, indikující zastavování aplikace. A při zpracovávání požadavku potom tuto proměnnou testovat a v případě detekce zastavování aplikace požadavek předčasně ukončit i když nebude proveden do konce. Toto je extrémně vhodné při dlouhých iteračních výpočtech nebo při zpracování jednotlivých položek velkého souboru dat.
Pro zadání lze použít Makro výraz (vyhodnocuje se po spuštění aplikace).
Poznámka:
Upozornění! Pokud se použije jiné vlákno (thread), pak přístup k ostatním objektům ve skriptu probíhá v jiném než v hlavním vlákně a je nutno vzít v úvahu případné problémy se synchronizací při čtení a zápisu do Pma objektů. Tato volba je vhodná zejména pro časově náročné výpočetní úkony na pozadí.

Historie:
Pm9.00.21: V konfigurátoru "Timeout při zastavování před ukončením pracovního vlákna [s]" lze pro zadání hodnoty použít makro výraz.
© MICROSYS, spol. s r.o.