LINUX.ORG.RU

sleep в Си


0

0

здравствуйте.

подскажите пожалуйста, есть ли Си'шная функция вроде sleep(), в которой можно было бы выставлять время "сна" в долях секунды.

ну или какой-нибудь другой способ затормаживать работу процесса (потока) на очень маленькое время (доли секунды).

Ответ на: комментарий от senjy

> А есть ли в линухе активная задержка (чтоб процесс не засыпал), типа nanospin_ns ?

а при чем здесь linux? такие вещи user-level код
должен сам реализовывать.

другое дело, что этот spin loop может быть прерван
ради более приоритетного процесса, ну так это уже
другая история.

idle ★★★★★
()
Ответ на: комментарий от idle

> а при чем здесь linux?

Например, в QNX есть уже готовая ф-ция nanospin_ns, вот я и спросил может что готовое и в linux есть. А какой тогда механизм организации активных задержек ?

senjy
()
Ответ на: комментарий от senjy

> Например, в QNX есть уже готовая ф-ция nanospin_ns, вот я и спросил может что готовое и в linux есть. А какой тогда механизм организации активных задержек ?

если вы про

http://www.qnx.com/developers/docs/momentics621_docs/neutrino/lib_ref/n/nanos...

то для Linux/BSD аналог nanospin_ns() имеет смысл только в контексте ядра -> ищите там. AFAIR для BSD (конкретно NetBSD) нечто подобное есть. не скажу за Linux.

по понятным причинам в user land это IMHO бессмысленно.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

> по понятным причинам в user land это IMHO бессмысленно.

Мне непонятно. Объясните, пожалуйста.

Мне казалось, что busyloop нужны для очень небольших задержек, чтобы избежать переключения в режим ядра.

А еще мне непонятна фраза из QNXовского мануала "busy-waits for the number of nanoseconds specified in nsec, without blocking the calling thread". Как это waits without blocking?

anonymous
()
Ответ на: комментарий от anonymous

> Как это waits without blocking?

Это какбы пустой цикл крутится определенное время и процесс занимает процессор (если конечно более приоритетным процессом не вытеснится), но при этом ничего полезного не делается, просто задержка.

senjy
()
Ответ на: комментарий от senjy

Я бы сказал, что описанный busy-loop очень даже blocks тот thread, которой его call, ну да ладно. Вопрос чисто терминологический.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.