2015-12-18 5 views
6

Ich benutze mehrere Threads in meinem Programm. Ich möchte einen bestimmten Thread nach 500ms aufwachen. Wie kann ich das machen, ohne einen usleep (500) zu benutzen?Wie mache ich einen Thread wach und suspendiere für 500ms kontinuierlich in C

+1

usleep ist der einzige vernünftige Weg, dies zu tun. Was ist dein Problem damit? –

+0

Ok. Vielen Dank. Aber können wir das aufgrund der verstrichenen Systemzeit oder so machen? – paulgked

+0

Danke für die Info. – paulgked

Antwort

2

Die Socket-API wie select kann als Timer verwendet werden.

struct timeval tv; 
tv.tv_sec = 0; 
tv.tv_usec = 500; 
select(0, NULL, NULL, NULL, &tv); 

Sie können diese Wahl benötigen.

+0

Kannst du zeigen, wie du mit * select * "einen Thread aufwecken und für 500ms ununterbrochen aussetzen kannst" pro Frage? –

+0

@ ringø, Es ist verwirrt, was "einen Faden machen" bedeutet. Vielleicht handelt es sich um Schlaf. Der Thread kann sich selbst mit Select schlafen. – seamaner

+0

Entschuldigung für die Konfusion. – paulgked

0

clock_nanosleep ist die POSIX-kompatible Version für ein Intervall auf einer hochauflösenden Uhr zu schlafen, man-Seite zu sehen, zum Beispiel auf http://linux.die.net/man/2/clock_nanosleep für weitere Einzelheiten.

Verwandte Themen