Witam
Muszę napisać funkcje, która w pętli będzie podawała mi wartości pośrednie między liczba1 a liczba2 z wybraną dokładnością oraz aby czas między podawaniem wartości pośrednich był edytowany i zawierał się między 1ms -20ms. Wykonanie pętli powinno zajmować około 0.5 - 3 sek. I mam problem z tym, że opóźnienie między kolejnymi wartościami tworzy pusta pętla.
A absolutnie nie mogę sobie pozwolić na to żeby przez ten czas kilku sekund aplikacjia była "zawieszona".
dla uproszczenia załóżmy, że liczba1 zawsze jest mniejsza od liczba2: np:
int liczba1 = 10;
int liczba2 = 300;
int dokładność = 5;
void wartosciPosrednie(liczba1, liczba2, dokladnosc, szybkosc)
{
for (liczba1 ; liczba1 < liczba2 ; liczba1+= dokladnosc)
{
cout << liczba1;
//tutaj jakis sposob na okreslenie czasowe (1-20ms) jakis timer
//ale bardzo zależy mi na tym aby ten czas odmierzany był dokładnie
[b]//pętla for nie moze byc ale musi byc na innym wątku bo na ten czas zawiesza aplikacje
//a tego oczywiscie muszę uniknąć[/b]
}
}
piszę aplikacje w czystym api i mfc i jeśliby użyc funkcji
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer
)
chciałbym ją uruchomić w tej funkcji powyżej, ale nie wiem jak zrobić, aby po czasie zależnym od ( nElapse ; Specifies the time-out value, in milliseconds. ) moja pętla dalej wykonywała obliczenia. Może po prostu nie wiem jak tego poprawnie użyć.. bo pośrednie wartości mogą być obliczane i wypisywane w funkcji, która będzie wywoływana jedynie tylko co pełne odliczenie Timera(a nie będzie wisiała aż do końca pętli). Może to nie będzie zawieszało aplikacji. Takie coś mam w mikrokontrolerze i to sie nazywa przerwanie od licznika :) jak to osiągnąć w moim przypadku?
Dziękuje z góry za jakiekolwiek wskazówki.