[C++]Funktion zwischenzeitlich unterbrechen

mlussi

Grünschnabel
Guten Abend

ich beschäftige mich momentan(die Zeit erlaubt es mir mal wieder :)) wieder ein wenig intensiver mit C++ und hätte diesbezüglich eine Frage bezüglich des zwischenzeitlichen unterbrechens des Funktionsablaufes:

Code:
void *moveplayer(void *threadarg)
{
	char *hello_msg;
	struct thread_data *my_data;
	my_data = (struct thread_data *) threadarg;
		
	hello_msg = my_data->name;
	
	int schnell = my_data->schnell;
	int frische = my_data->frische;
	int xold=my_data->posx;
	int yold=my_data->posy;
	int x = my_data->movetox;
	int y = my_data->movetoy;
	x=x-xold;
	y=y-yold;
	//printf("%d,%d (%d,%d)\n",x,y,xold,yold);
	
	int dist=sqrt(x*x + y*y);
	int geschw = schnell/10;
	int time= ceil(dist/geschw);
	
	wait(time);
	my_data->posx+=my_data->movetox;
	my_data->posy+=my_data->movetoy;
	xold=my_data->posx;
	yold=my_data->posy;
	player(threadarg);

	pthread_exit(NULL);
 }
Diese Funktion sollte an der Stelle "wait(time)" unterbrochen werden. Ich habe hierfür die folgende Funktion geschrieben:
Code:
void wait ( int seconds )
{
  clock_t endwait;
  endwait = clock () + seconds * CLOCKS_PER_SEC ;
  while (clock() < endwait) {}
}
Das Problem hierbei ist allerdings, dass dies den Prozessor extrem stark belastet und es sicher noch einen ressourcenschonenderen Weg gibt. Hat jemand eine Idee?
Das ganze läuft auf Debian Lenny. Danke für eure Mühe.
 
Zuletzt bearbeitet:
Dafür gibts bereits eine Funktion: _sleep(int) Die angabe von int in Milliesecunden
Die Funktion müsste in der windows.h sein
 
Dafür gibts bereits eine Funktion: _sleep(int) Die angabe von int in Milliesecunden
Die Funktion müsste in der windows.h sein

Ich suche allerdings eine Lösung welche auf Linux funktioniert (s.o.), genannte Header-Datei wird da aus nahe liegenden Gründen nicht mitgeliefert. ;)

Gemäss cplusplus.com ist es auch keine Standardfunktion sondern Windows spezifisch
 
Zuletzt bearbeitet:
Logisch, dass es windows spezifisch ist, wenns in der windows.h ist, wusste nicht, dass du in linux programierst, da fällt mir jetzt auch keine lösung ein, sorry
 
Zurück