Visa ett inlägg
Gammal 2016-05-26, 00:40   #36
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 715
Standard

Citat:
Ursprungligen postat av MegaCastor Visa inlägg
Felet uppstår i TS2010 också.

Lite bakgrund:

Banan började byggas i TS2010 med det moderna signalsystemet.
Problemet med message overflow i början av sessionen uppstod
även där. Tendensen var att felet blev värre ju fler signaler jag satte upp.
Först en enstaka rad i felrutan, sedan flera med växande antal signaler.

Vad värre var, problemet tycks nästan växa exponentiellt så att det vid
en viss punkt "exploderar" och fyller felrutan med liknande message overflow-
meddelanden. Då hänger hela systemet upp till 10 sek i början av sessionen
innan man kan titta på felmeddelandena. Sedan kan man köra tåg och då
tycks signalerna i de flesta fall fungera, även om jag ibland har sett
skumma beteenden hos några enskilda signaler.
Men om du för över denna banan i TANE, får du exakt samma fel då? Har denna bana flera signaler än den ifrån TANE som du visade växelfelmeddelandena ifrån?

Det här felet är ju inte samma som det andra, utan ett helt annat. För i det här fallet så overflowas alla signaler på banans message queues. Det verkar som att alla signaler i början av sessionen ungefär samtidigt skickar ett broadcast-meddelande (alltså ett meddelande som alla som lyssnar på signalen kan fånga upp) och talar om att deras signal state har ändrats. (Antagligen för att de alla initialiseras på samma gång och då sätter sitt signal state) Eftersom alla signaler också verkar lyssna på alla andra signaler på banan så kommer alla signalers message queues att innehålla samma meddelanden. En specifik signal (Hoc 52) råkar vara den som får samtliga signalers meddelandeköer att overflowas, därav att det namnet förekommer på alla rader i felmeddelandeöversikten som du visar i första bilden.

Orsaken till det här är att det är fler signaler på banan än vad Trainz klarar av att hantera. Särskilt gamla TS2010 som inte är flertrådad har en tråd där alla signaler initialiseras och får meddelandeköerna att overflowas för att varje signal inte har tid att ta hand om meddelandena. Potentiellt så skulle TANE kunna klara av detta för att den är bättre multitrådad och kan låta signalerna ta hand om meddelandena samtidigt som nya signaler initialiseras.

Det borde gå att få reda på hur många signaler som är maxgränsen. Om du tar valfri signals detaljerade lista och räknar hur många rader med meddelanden som redan är i kön (alltså antal rader som börjar med "router"), så kommer du att få det maximal antalet signaler som går att ha i TS2010. Min gissning är att det är 256.

Själva meddelandet "Signal, StateChanged" är ett standardmeddelande inbyggt i Trainz som det verkar, så jag tror inte att vi kan påverka det på något sätt.
En potentiell lösning skulle vara att leta reda på den loop som initialiserar alla signaler på banan och se till att den bara initialiserar ett 10- eller 100-tal signaler åt gången, och efter varje grupp med signaler tar en kort paus för att lämna över CPU:n till alla signaltrådar så de kan få tid att uppdatera sig och gå igenom meddelandeköerna. Men det förutsätter att detta görs i Svenolovs script och inte är Trainz egna, underliggande signalscript.

Citat:
Ursprungligen postat av MegaCastor Visa inlägg
Edit: Jag har också 76 MB JetLog.txt om det skulle vara av intresse.
Naaae, men tack för erbjudandet! Har nog att göra så det räcker i alla fall!
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat