C : Cara Mendapatkan Milisaat pada Linux Tanpa Had Jam()
Tidak seperti Windows di mana clock() mengembalikan milisaat, pelaksanaan Linux mengelilingi keputusan kepada 1000 terdekat, menghasilkan ketepatan tahap kedua sahaja. Keperluan untuk pemasaan peringkat milisaat menimbulkan persoalan: Adakah terdapat penyelesaian C standard tanpa menggunakan perpustakaan pihak ketiga?
Jawapannya: gettimeofday()
Jawapannya terletak pada fungsi POSIX standard gettimeofday(). Fungsi ini menyediakan maklumat pemasaan ketepatan tinggi dengan mengisi struktur jangka masa dengan masa semasa. Berikut ialah contoh C yang menggunakan gettimeofday():
#include <sys/time.h> #include <stdio.h> #include <unistd.h> int main() { struct timeval start, end; long mtime, seconds, useconds; gettimeofday(&start, NULL); usleep(2000); gettimeofday(&end, NULL); seconds = end.tv_sec - start.tv_sec; useconds = end.tv_usec - start.tv_usec; mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; printf("Elapsed time: %ld milliseconds\n", mtime); return 0; }
Kod ini menunjukkan cara mengira masa berlalu dalam milisaat dengan menggabungkan komponen saat dan mikrosaat yang diperoleh daripada gettimeofday(). Ambil perhatian bahawa penambahan 0.5 digunakan untuk membundarkan hasil kepada integer terdekat.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Masa Ketepatan Milisaat dalam C pada Linux Tanpa Bergantung pada clock()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!