Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

26.06.2012, 14:49

kann boost::asio diesbezüglich nur empfehlen, SEHR MÄCHTIG
http://www.boost.org/doc/libs/1_49_0/doc…o/tutorial.html
@Topic: die tuts "Timer.1" und "Timer.2" sollten für dich am interessantesten sein.

Markus

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

26.06.2012, 16:02

Wieso genau musst du "eine bestimmte Anzahl an Sekunden warten"? Auf was genau möchtest du da warten?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

26.06.2012, 20:18

Weil das ein busy Wait wäre, der die CPU für 2 Sekunden lang voll auslastet...

14

27.06.2012, 00:03

Hmm... Warum nicht einfach mit ctime?

Beispiel

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <ctime>


void wait(unsigned int const ms)
{
    clock_t endtime;
    endtime = clock() + ms;
    while(clock() < endtime);
}


int main()
{
    wait(2000); // warte 2 Sekunden...
    return 0;
}


EXTREM schlechter Programmierstil, "busy waiting" ist immer fatal!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

27.06.2012, 07:12

Der Stil ist schon ok, aber die Methodik nicht ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

16

27.06.2012, 17:00

Was ist denn an diesem "busy waiting" so schlimm? Ja, voll ausgelastet. Aber was wären so die möglichen Auswirkungen, um mal selten dämlich nachzufragen. :crazy:
So krass, dass alles freezed oder so ist es nicht, habs ja extra eben mal ausprobiert. Auch mit dem Process Explorer war für mich jetzt keine 'schlimmere' Veränderung erkennbar.

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

27.06.2012, 17:05

1) Wenn Du den Main-Thread blockierst, macht Dein Programm nichts mehr außer "XXX reagiert nicht mehr" und wird weiß
2) Bei einem Single-Core ist die CPU unter Volllast, auch Process Explorer oder Task Manager bekommt man dann nicht mehr vernünftig gestartet
3) Wozu? Es geht ja auch richtig.
4) Verschwendete Leistung.
5) Man stelle sich vor, jedes Programm hätte 1-2 solcher Threads. Dann könnte man sein System getrost wegwerfen und alles von Hand erledigen. Brettspiele sind ja eh schöner. :D
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (27.06.2012, 18:53)


18

27.06.2012, 20:39

Danke schon mal für die ganzen schnellen Antworten ;) Also jetzt wurden hier so viele Möglichkeiten gesagt und welche ist denn jetzt eigentlich die beste davon? Also wenn ich sleep benutze bleibt dann mein ganzer Computer für die Zeit stehen also werden die anderen Anwendungen, die ich gerade ausführe dann auch blockiert? Oder soll man Sleep einfach nur nicht verwenden weil es den CPU zu sehr belastet?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

19

27.06.2012, 21:08

Sleep (die System-Funktion "Sleep", nicht das "Sleep", was da oben eigenmächtig programmiert wurde") belastet weder die CPU, noch hindert es andere Anwendungen an der Ausführung. Im Gegenteil, es "zwingt" andere Anwendungen dazu etwas zu tun, während die eigene "schläft". Das ist aber wie gesagt nicht mehr gern gesehen. Besser wäre hier, dass Dein Programm in der Zeit etwas anderes macht und der relevante Code später wieder aufgerufen wird, wenn es notwendig ist.

Am besten wird es sein, Du erklärst uns einfach mal für welchen Grund und Zweck Du Dein Programm wann genau auf was warten lassen willst, dann können wir Dir vielleicht auch eine gute Alternative nennen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

27.06.2012, 21:29

Danke schon mal für die ganzen schnellen Antworten ;) Also jetzt wurden hier so viele Möglichkeiten gesagt und welche ist denn jetzt eigentlich die beste davon? Also wenn ich sleep benutze bleibt dann mein ganzer Computer für die Zeit stehen also werden die anderen Anwendungen, die ich gerade ausführe dann auch blockiert? Oder soll man Sleep einfach nur nicht verwenden weil es den CPU zu sehr belastet?

Es gibt eben keine allgemein beste Möglichkeit. Wie immer hängt es davon ab, was genau du eigentlich machen willst...

Daher nochmal:
Wieso genau musst du "eine bestimmte Anzahl an Sekunden warten"? Auf was genau möchtest du da warten?

;)

Werbeanzeige