Rumah >pembangunan bahagian belakang >C++ >Cara Menggantung Pelaksanaan dalam C : Panduan untuk Fungsi Tidur dan Alternatif

Cara Menggantung Pelaksanaan dalam C : Panduan untuk Fungsi Tidur dan Alternatif

DDD
DDDasal
2024-10-23 19:50:02560semak imbas

How to Suspend Execution in C  : A Guide to the Sleep Function and Alternatives

Fungsi Tidur dalam C : Panduan Komprehensif

Tidak seperti rakan sejawatannya dalam C, C tidak mempunyai fungsi Sleep() yang jelas untuk menjeda pelaksanaan program untuk tempoh tertentu. Walau bagaimanapun, piawaian C moden memperkenalkan penyelesaian serba boleh, disediakan oleh dan pengepala.

Menggunakan std::this_thread::sleep_for:

Ini ialah pendekatan yang disyorkan untuk C 11 dan lebih baru. Ia memerlukan satu hujah jenis std::chrono::milisaat untuk menentukan tempoh tidur.

<code class="cpp">#include <chrono>
#include <thread>

std::chrono::milliseconds timespan(111605); // or whatever

std::this_thread::sleep_for(timespan);</code>

Alternatif Pra-C 11:

Sebelum pengenalan benang dalam C 11, penyelesaian khusus platform diperlukan. Satu pilihan ialah mentakrifkan fungsi tidur menggunakan kompilasi bersyarat:

<code class="cpp">#ifdef _WIN32
    #include <windows.h>

    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include <unistd.h>
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif</code>

Sebagai alternatif, anda boleh memanfaatkan perpustakaan Boost:

<code class="cpp">#include <boost/thread/thread_only.hpp>

void sleep(unsigned milliseconds)
{
    boost::this_thread::sleep(boost::posix_time::milliseconds(milliseconds));
}</code>

Fungsi Tambahan:

Selain tidur_untuk, header menyediakan sleep_until untuk menjeda pelaksanaan sehingga titik masa tertentu. Ini menawarkan lebih fleksibiliti dan membolehkan kawalan yang lebih tepat ke atas tempoh tidur.

Atas ialah kandungan terperinci Cara Menggantung Pelaksanaan dalam C : Panduan untuk Fungsi Tidur dan Alternatif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn