NAME

POSIX::RT::Clock - POSIX real-time clocks

VERSION

version 0.019

SYNOPSIS

use POSIX::RT::Timer;

my $timer = POSIX::RT::Clock->new('monotonic');
$timer->sleep(1);

DESCRIPTION

POSIX::RT::Clock offers access to various clocks, both portable and OS dependent.

METHODS

Class methods

  • new($type)

    Create a new clock. The $types supported are documented in get_clocks.

  • get_clocks()

    Get a list of all supported clocks. These will be returned by their names, not as objects. Possible values include (but may not be limited to):

    • realtime

      The same clock as time and Time::HiRes use. It is the only timer guaranteed to always available and is therefor the default.

    • monotonic

      A non-settable clock guaranteed to be monotonic. This is defined in POSIX and supported on most operating systems.

    • process

      A clock that measures (user and system) CPU time consumed by (all of the threads in) the calling process. This is supported on many operating systems.

    • thread

      A clock that measures (user and system) CPU time consumed by the calling thread. This is Linux specific.

    • uptime

      A clock that measures the uptime of the system. This is FreeBSD specific.

    • virtual

      A clock that counts time the process spent in userspace. This is supported only in FreeBSD, NetBSD and Solaris.

  • get_cpuclock($id = 0)

    Get the cpu-time clock for $id. If $id is an integer, it's interpreted as a PID and a per process clock is created, with zero having the special meaning of the current process (this is the same as the process clock). If $id is a thread object, a per thread clock is created. This call is currently not supported on many operating systems.

Instance methods

  • get_time()

    Get the time of this clock.

  • set_time($time)

    Set the time of this clock. Note that this may not make sense on clocks other than realtime and will require sysadmin permissions.

  • get_resolution()

    Get the resolution of this clock.

  • sleep($time, $abstime = 0)

    Sleep a $time seconds on this clock. Note that it is never restarted after interruption by a signal handler. It returns the remaining time. $time and the return value are relative time unless $abstime is true. This function may not be available on some operating systems.

  • sleep_deeply($time, $abstime = 0)

    Sleep a $time seconds on this clock. Unlike sleep, it will retry on interruption until the time has passed. This function may not be available on some operating systems.

  • timer(%options)

    Create a timer based on this clock. All arguments except clock as the same as in POSIX::RT::Timer::new.

  • handle

    This returns the raw handle to the clock.

SEE ALSO

A low-level interface to POSIX clocks is also provided by:

  • Time::HiRes

  • POSIX::2008

AUTHOR

Leon Timmermans <fawaka@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.