Penggunaan fungsi sleep() sebagai timer
Di dalam pengembangan aplikasi yang memanfaatkan socketAPI kadang diperlukan tundaan atau timer untuk menunggu paket yang datang dari sisi server atau mengecek apakah paket yang dikirimkan oleh clientsudah diterima oleh server atau tidak. Hal ini tidak masalah bila protokol yang digunakan adalah Transmission Control Protocol (TCP) yang mempunyai mekanisme three-way handshake untuk melakukan koneksi antara server dan client. Tetapi hal tersebut tidak dimungkinkan untuk connectionless protocol seperti User Datagram Protocol (UDP) sehingga timer digunakan untuk melakukan terminasi bila tidak ada respon ketika melakukan transmisi data.
Ada beberapa metoda untuk membuat timerseperti dengan menggunakan perulangan dengan jumlah perulangan yang sangat besar,blocking, dan non-blocking. Metoda dengan menggunakan looping yang sangat besar dapat digunakan bila waktu tunggunya tidak terlalu besar dan masih dalam orde mikro (us) dan milliseconds (ms). Tetapi bila waktu tunggu sudah sekian ratus milliseconds dan seconds maka metoda ini tidak dapat digunakan kembali karena keakurasian yang terbatas dan biasanya langsung dihilangkan oleh compiler yang melakukan optimisasi terhadap perulangan tersebut. Metodablocking adalah metoda perulangan atau fungsi lain sehingga aplikasi utama tidak dapat mengerjakan tugas lain sampai waktu yang digunakan oleh timer sudah habis. Perulangan yang sebelumnya dibahas dapat dikategorikan sebagai metoda Blocking. Tulisan ini akan berfokus pada metoda ini.
Di dalam pemrograman C, fungsi yang digunakan untuk timer dengan blocking adalah adalah sleep(). Bentuk umum dari fungsi ini adalah sebagai berikut,
Fungsi sleep() mempunyai parameter dalam satuan detik dan mempunyai return value0 atau sisa waktu yang tersisa bila di-interupsi oleh signal handler. Contoh penggunaannya dalam program C adalah sebagai berikut,
Luaran dari program tersebut dimulai dengan menampilkan kata “Tidur” terlebih dahulu kemudian dengan fungsi sleep() selama lima detik untuk memunculkan kata “Bangun”.
Demikianlah penggunaan fungsi sleep() sebagai timer untuk memberikan tundaan atau delay selama lima detik. Seperti yang telah dijelaskan sebelumnya, fungsi ini termasuk kategori blocking sehingga aplikasi utama tidak dapat mengerjakan task atau tugas lain.