---
name: "zclock"
section: "3"
platform: "linux"
package: "libczmq-dev"
version: "4.2.1-3+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/zclock/3"
---

# zclock(3)

Class for millisecond clocks and delays

## NAME

zclock - Class for millisecond clocks and delays

## SYNOPSIS

```
//  This is a stable class, and may not change except for emergencies. It
//  is provided in stable builds.
//  Sleep for a number of milliseconds
CZMQ_EXPORT void
    zclock_sleep (int msecs);
//  Return current system clock as milliseconds. Note that this clock can
//  jump backwards (if the system clock is changed) so is unsafe to use for
//  timers and time offsets. Use zclock_mono for that instead.
CZMQ_EXPORT int64_t
    zclock_time (void);
//  Return current monotonic clock in milliseconds. Use this when you compute
//  time offsets. The monotonic clock is not affected by system changes and
//  so will never be reset backwards, unlike a system clock.
CZMQ_EXPORT int64_t
    zclock_mono (void);
//  Return current monotonic clock in microseconds. Use this when you compute
//  time offsets. The monotonic clock is not affected by system changes and
//  so will never be reset backwards, unlike a system clock.
CZMQ_EXPORT int64_t
    zclock_usecs (void);
//  Return formatted date/time as fresh string. Free using zstr_free().
//  Caller owns return value and must destroy it when done.
CZMQ_EXPORT char *
    zclock_timestr (void);
//  Self test of this class.
CZMQ_EXPORT void
    zclock_test (bool verbose);
Please add '@interface' section in './../src/zclock.c'.
```

## DESCRIPTION

The zclock class provides essential sleep and system time functions, used to slow down threads for testing, and calculate timers for polling. Wraps the non-portable system calls in a simple portable API.

The Win32 Sleep() call defaults to 16ms resolution unless the system timer resolution is increased with a call to timeBeginPeriod() permitting 1ms granularity.

## EXAMPLE

**From zclock\_test method**.

```
int64_t start = zclock_time ();
zclock_sleep (10);
assert ((zclock_time () - start) >= 10);
start = zclock_mono ();
int64_t usecs = zclock_usecs ();
zclock_sleep (10);
assert ((zclock_mono () - start) >= 10);
assert ((zclock_usecs () - usecs) >= 10000);
char *timestr = zclock_timestr ();
if (verbose)
    puts (timestr);
freen (timestr);
#if defined (__WINDOWS__)
zsys_shutdown();
#endif
```

## AUTHORS

The czmq manual was written by the authors in the AUTHORS file.

## RESOURCES

Main web site:

Report bugs to the email \<**zeromq-dev@lists.zeromq.org**\[1\]\>

## COPYRIGHT

Copyright (c) the Contributors as noted in the AUTHORS file. This file is part of CZMQ, the high-level C binding for 0MQ: http://czmq.zeromq.org. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. LICENSE included with the czmq distribution.

## NOTES

- 1\.

  zeromq-dev@lists.zeromq.org

  mailto:zeromq-dev@lists.zeromq.org
