2013-10-18 13 views

risposta

13

EDIT 2017: C++ 11 sleep_for è il modo giusto per farlo. Si prega di vedere Xornad's answer, below.


C++ 03:

Da Mac OS X è basato su UNIX, si può quasi sempre e solo utilizzare le funzioni standard di Linux!

In questo caso è possibile utilizzare usleep (che richiede un tempo in microsecondi) e moltiplicare i millisecondi per 1000 per ottenere i microsecondi.

#include <unistd.h> 
int main() { 
    usleep(1000); // will sleep for 1 ms 
    usleep(1); // will sleep for 0.001 ms 
    usleep(1000000); // will sleep for 1 s 
} 

Per maggiori informazioni su questa funzione, controlla la pagina man di Linux:

http://linux.die.net/man/3/usleep

+0

Se si sta compilando su OS 10.7 o successivo, vedere la risposta di Xornand qui sotto! L'utilizzo di C++ 11 è molto più multipiattaforma rispetto all'utilizzo di codice specifico del sistema operativo! – NHDaly

+0

per utilizzare la funzionalità C++ 11, devi accenderlo specificatamente in Xcode. Vedi il mio commento qui sotto sulla risposta di @ Xornand! – NHDaly

+0

sleep (0.001f) dormirà per 0 secondi (sleep accetta un numero intero) – cap

12

Se si dispone di C++ 11 il supporto nel vostro compilatore, è possibile utilizzare il sleep_for ed evitare di dover utilizzare un'API specifica per il sistema operativo. (http://en.cppreference.com/w/cpp/thread/sleep_for)

#include <thread> 
#include <chrono> 

int main() 
{ 
    std::this_thread::sleep_for(std::chrono::milliseconds(1000)); 
    return 0; 
} 
+0

Il supporto per C++ 11 è disponibile per me in xcode 4.6.3 ma il thread di intestazione non è presente? –

+1

Questa è una risposta molto migliore della mia! (Grazie Xornand, non avrei mai pensato di usarli!) – NHDaly

+0

Ma hai ragione, per ottenere le intestazioni C++ 11 da compilare in Xcode, devi attivare il supporto della libreria C++ 11. Vai al tuo progetto nel navigatore, fai clic su Build Settings e poi cerca C++ Standard Library. Cambia l'impostazione del tuo progetto in 'libC++'. Ho modificato l'eccellente risposta di Xornand per riflettere queste informazioni, ma non sarà visibile fino a quando le mie modifiche non saranno accettate. :) – NHDaly

Problemi correlati