Namespaces
Variants

thrd_sleep

From cppreference.net
Definido en el encabezado <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(desde C11)

Bloquea la ejecución del hilo actual durante al menos hasta que transcurra la duración basada en TIME_UTC apuntada por duration .

El sueño puede reanudarse antes si se recibe una signal que no es ignorada. En tal caso, si remaining no es NULL , la duración restante se almacena en el objeto apuntado por remaining .

Contenidos

Parámetros

duration - puntero a la duración para suspender
remaining - puntero al objeto para colocar el tiempo restante en interrupción. Puede ser NULL , en cuyo caso se ignora

Valor de retorno

0 en suspensión exitosa, - 1 si ocurrió una señal, otro valor negativo si ocurrió un error.

Notas

duration y remaining pueden apuntar al mismo objeto, lo que simplifica volver a ejecutar la función después de una señal.

El tiempo real de suspensión puede ser mayor al solicitado porque se redondea hacia arriba a la granularidad del temporizador y debido a la sobrecarga de planificación y cambio de contexto.

El equivalente POSIX de esta función es nanosleep .

Ejemplo

#include <threads.h>
#include <time.h>
#include <stdio.h>
int main(void)
{
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
    thrd_sleep(&(struct timespec){.tv_sec=1}, NULL); // dormir 1 segundo
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
}

Salida:

Time: Mon Feb  2 16:18:41 2015
Time: Mon Feb  2 16:18:42 2015

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.26.5.7 La función thrd_sleep (p: 281)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.26.5.7 La función thrd_sleep (p: 385)

Véase también

cede el segmento de tiempo actual
(función)