Apakah masuk akal untuk berasumsi bahwa jam CLOCK_MONOTONIC tersedia di semua server Linux modern?
Ya. Masuk akal untuk berasumsi demikian.
Dari kata-kata entri manual gettime, kita dapat menyimpulkan bahwa glibc versi lama tidak mendukung CLOCK_MONOTONIC
. (Saya masih mencoba mencari tahu berapa umurnya ... tapi mungkin saat glibc mengklaim kepatuhan POSIX 1003.1.)
CLOCK_MONOTONIC
telah ditentukan (setidaknya) dalam IEEE Std 1003.1, Edisi 2004, meskipun implementasi libc yang sesuai tetap memungkinkan untuk tidak mendukung CLOCK_MONOTONIC
.
Kode sumber kernel Linux memiliki dukungan untuk CLOCK_MONOTONIC
setidaknya sejak Linux 3.0 (2011).
Dari sumber lain, ini juga bergantung pada bagaimana glibc sistem Anda dibuat. (Bila dibuat dengan "emulated timers", CLOCK_MONOTONIC
tidak didukung.)
Berikut beberapa kasus yang tidak didukung:
-
Mungkin ada masalah dengan beberapa chip CPU lama; misalnya https://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
Itu tidak didukung untuk beberapa (semua?) versi Cygwin.
-
Itu tidak didukung untuk beberapa (semua?) versi uCLibc di ARM.
Bisa juga untuk CLOCK_MONOTONIC
untuk didukung tetapi buggy:
- Linux clock_gettime(CLOCK_MONOTONIC) perilaku non-monotonik yang aneh
Apakah masuk akal untuk berasumsi bahwa jam CLOCK_MONOTONIC tersedia di semua server Linux modern?
Saya hanya bisa mengomentari pertanyaan ini. Ya, masuk akal bahwa semua sistem tingkat produksi yang Anda gunakan akan memiliki jam monoton yang dapat diakses oleh Linux. Ini juga berlaku untuk server virtual dan kontainer.
Rekayasa yang baik mengharuskan Anda melakukan check in untuk ini dan error-out jika asumsi rusak, tetapi saya akan mengandalkan ini pada waktu desain.