Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: timer in C++  (gelezen 2342 keer)

Offline JV.com

  • Lid
timer in C++
« Gepost op: 2010/04/14, 13:47:52 »
Goedemiddag iedereen!

ik ben op zoek op naar een manier om mijn programma tijdens de recursie 1 seconde te laten wachten voordat de recursie verder gaat. dus om kort te zijn heb ik in C++ een soort "timer" nodig.

ik heb gekeken naar de time.h library, alleen deze begrijp ik niet helemaal ben ik bang. ik zeg hieronder in pseudo code neer wat ik graag wil bereiken:

voer bewerkingen uit.
wacht 1 seconden.
return functie(parameter1,parameter2)


zou iemand mij misschien een kleine uitleg of voorbeeldje kunnen geven hoe ik dit kan doen ?

alvast bedankt,

JV.com

Edit:

ik ben bekend met de functie sleep() alleen deze zeg het programma voor een X tijd op "stand-by" en dat is niet wat ik wil bereiken.

Re: timer in C++
« Reactie #1 Gepost op: 2010/04/14, 13:53:51 »
Als je met C++ werkt dan werk je liniair, alles wordt een voor een uitgevoerd, dus als je iets pauzeert ligt normaal gezien heel je programma stil.
Ik denk dat het enige wat je kan doen toch het gebruik van sleep(1) is.
« Laatst bewerkt op: 2010/04/14, 13:58:01 door Ward De Ridder »
http://leerubuntu.org (ubuntu zonder moeilijke woorden)
VoidWarranties (Hackerspace) Antwerpen
Microsoft isn't evil, they just make really crappy operating systems. - Linus Torvalds

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: timer in C++
« Reactie #2 Gepost op: 2010/04/14, 13:57:40 »
Als je met C++ werkt dan werk je liniair, alles wordt een voor een uitgevoerd.
Ik denk dat het enige wat je kan doen toch het gebruik van sleep(1) is.
Daar ben ik het mee eens.
Als dit toch niet werkt JV, moet je even uitleggen wat je bedoelt met het verschil tussen "even wachten" en "in stand by" zetten
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline JV.com

  • Lid
Re: timer in C++
« Reactie #3 Gepost op: 2010/04/14, 14:13:33 »
oke, sorry mensen mijn fout, ik dacht dat sleep het programma een voor een X aantal seconden "stopt", hiermee bedoel ik dat er geen verdere bewerkingen kunnen worden uitgevoerd totdat de x tijd verlopen is.

nu is de situatie zo dat ik een recursie gemaakt heb die ik een seconde wil pauzeren voordat deze zichzelf returned. maar ik zou graag willen (dat de andere functies) in die tijd nog wel aanspreekbaar blijven.

bijv (dit is puur even een snel voorbeeldje wat ik zo bedenk)

int functie1(int seconds)
{
wacht een seconde;
return functie1(seconds+=);
}

int functie2(int cijfer)
{
for(int i = 0; i < cijfer; i++)
{
  cout << 1 << endl;
}
}


als ik functie1 aanspreek wil ik dat deze voor een seconde stil wordt gezet. (bijv. sleep) maar dat functie2 dan nog wel aanroepbaar blijft. maar dit ik volgens mij niet mogelijk dan gezien jullie antwoorden. ik zou een gaan rommelen met sleep().

hoop dat mijn uitleg een beetje te volgen is.

Bedankt voor jullie moeite.

Grt,

JV.com

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: timer in C++
« Reactie #4 Gepost op: 2010/04/14, 14:26:57 »
Dat hele sleep gebeuren wil je hoop ik alleen maar om te oefenen enzo? 

Ik zou proberen die functie in aparte "threads" te starten. Misschien heeft een C kenner een beter of concreter voorbeeld.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline Joshua822

  • Lid
Re: timer in C++
« Reactie #5 Gepost op: 2010/04/15, 01:00:21 »
Dus je wilt functie2 uitvoeren terwijl functie1 bezig is ? Dat kan. Doe eens wat onderzoeken naar processen in C++. Ik denk dat je in dit geval zo te werk moet gaan:

Verkrijg het PID van het ouderproces > Fork het ouderproces > Laat de fork volgen door een if statement dat kijkt of het PID dat van het ouderproces is > Zo ja, voor functie1 uit > Zo nee, voer functie2 uit en stop het proces. ( Dit klinkt ingewikkeld, maar als je wat onderzoek doet zul je het wel begrijpen )

Op deze pagina kun je interessante informatie vinden. Alhoewel de informatie voor de C programmeertaal bedoeld is, kan het ook bruikbaar zijn voor de C++ programmeertaal.

Re: timer in C++
« Reactie #6 Gepost op: 2010/04/15, 09:40:07 »
Erm... C(++) is een sequentiële programmeertaal. dat betekent dat alles op volgorde wordt uitgevoerd en er maar één ding tegelijk kan worden uitgevoerd. De meeste programmeertalen zijn zo trouwens.

Als je twee dingen tegelijk uitvoert, dan denk ik dat je threads aan het gebruiken bent. In dat geval zal je de sleep() van je thread-library moeten gebruiken, vb pthread_sleep() of zo.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net