Proste pytanie: Zbudowałem quasi-procesorowy symulator, który ma wykres pierwszeństwa, określa priorytety (i instrukcje "gotowe"), planuje zadania na dostępnych jednostkach funkcjonalnych itp. Prawie bardzo prosty symulator.Prosta biblioteka symulacji zdarzeń dyskretnych (C++) do planowania procesów/zadań?
Ale zdałem sobie sprawę, że powinienem był go zbudować na silniku DES, ponieważ nie mam możliwości (poza ustawianiem flagi i sprawdzaniem każdego węzła na każdym "takt zegara") za mówienie takich rzeczy jak "W 10 cyklach, rób to "(tzn. podnosząc sygnały we wcześniej określonych godzinach i obsługując zdarzenia, które mają się wydarzyć w przyszłości lub gdy zostaną spełnione określone z góry kryteria).
Mogę oczywiście zrealizować to sam; zbudowałem klasę "zdarzenia", przykleiłem je do kolejki i na końcu (lub na początku) każdego cyklu, sprawdź kolejkę i zobacz, co tam jest, ale sądzę, że nie ma sensu wymyślać koła.
Tak skomplikowane symulatory sieciowe są oczywiście DROGĄ przesadą. Nie potrzebuję fantazyjnego modelowania, kolejkowania ani niczego w tym stylu. Wszystko, czego potrzebuję, to wbudowany zegar i możliwość ustawiania zdarzeń, podnoszenie flag, gdy coś się dzieje, itp., Jak opisałem powyżej.
Darmowe i C++ byłoby świetnie.
Ktoś ma jakieś pomysły? (Najbliższy, do którego przyszedłem - dzięki innym, nieco pokrewnym pytaniom - nazywa się SIMLIB.)
Dziękuję bardzo!
Jeśli już zaimplementowałeś harmonogram zadań, czy nie możesz pozwolić, aby zdarzenia licznika były kolejnym zadaniem? – jxh
+1 za próbę uniknięcia reinstalacji koła. Z twojego pytania wynika, że chciałbyś mieć dodatkowe funkcje z silnika DES (w przeciwnym razie jest to nic innego jak pętla i posortowana lista zdarzeń, więc użycie specyficznej biblioteki _any_ wydaje się być przesadą), więc czego jeszcze potrzebujesz? Skalowalność (symulacja równoległa)? Obsługa losowych dystrybucji/RNG? Czy wolisz konkretny widok świata (np. Zobacz http://www.informs-sim.org/wsc10papers/019.pdf)? –
Przepraszamy za opóźnienie w odpowiedzi! Zadania programu planującego nie są generowane w sposób ogólny. Opóźnienia związane z timerem wymagałyby znacznego majsterkowania, a cała sprawa polega na tym, aby nie odkrywać koła na nowo. – user770901