c sleep how use sleep function c programs
У цьому посібнику зі сну C ++ буде обговорено функцію сну в C ++ та побачено, як перевести нитку в режим сну. Ми також дізнаємося про інші функції, а саме. заснути:
Будь-яка комп’ютерна програма, яка є процесом, завданням або ланцюжком, може перейти в режим сну або перейти в неактивний стан протягом певного часу. Виконання призупинено на цей період часу. Виконання буде відновлено, коли закінчиться часовий інтервал сну або сигнал чи переривання призведе до відновлення виконання.
Щоб перевести програму (завдання, процес або ланцюжок) у режим сну, ми використовуємо системний виклик сну. Типовий системний виклик режиму сну приймає час як параметр, який вказує, скільки часу програмі потрібно для сну або залишення неактивності.
=> Ознайомтесь із Повною серією навчальних програм C ++ тут.
У нас також є функції usleep () та thread :: sleep, про які ми поговоримо в цьому посібнику. Наданий час в основному становить мілісекунди, мікросекунди або секунди, і залежно від цього ми маємо різні функції, які можуть перевести програму в режим сну.
Що ви дізнаєтесь:
- Функція сну ()
- Функція Usleep ()
- Сон потоку (sleep_for & sleep_until)
- Часті запитання
- Висновок
- Рекомендована література
Функція сну ()
Мова С ++ не забезпечує власну функцію сну. Однак конкретні файли операційної системи, такі як unistd.h для Linux і Windows.h для Windows надають цю функціональність.
Коли ми використовуємо операційну систему Linux або UNIX, нам потрібно включити в нашу програму файл заголовка “unistd.h”, щоб використовувати спати () функція.
Використовуючи операційну систему Windows, ми повинні включити заголовок “Windows.h”, щоб використовувати функцію sleep (). Отже, для написання крос-платформної програми ми можемо мати код, як показано нижче, так що буде використаний будь-який із заголовків.
#ifdef _WIN32 #include #else #include #endif
Функція сну описана нижче:
Прототип функції:
непідписаний сон (непідписані секунди);
Параметри:
секунд => Проміжок часу в секундах, на який призупинено виконання програми
Повернене значення:
0 => Якщо режим сну повертається, коли минув запитаний час.
Якщо режим сну переривається сигналом, повертається непроспана сума (вказаний запитуваний період часу мінус фактично минулий час).
Опис:
Функція sleep () змушує програму або процес, в якому вона викликається, тимчасово призупинити її виконання на певний проміжок часу в секундах, заданому параметром функції. Виконання призупиняється до тих пір, поки не пройде час, який вимагається, або до функції чи сигналу або переривання.
Однак, якщо система запланувала будь-яку іншу діяльність, час призупинення може бути довшим.
Нижче наведено програму на C ++, яка використовує функцію сну між двома операторами cout.
#ifdef _WIN32 #include #else #include #endif #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); sleep(10); cout << 'World'; cout << endl; return 0; }
Вихід:
Привіт Світ
У наведеній вище програмі ми даємо команду сплячого з 10-секундним періодом після друку “Привіт”. Компілятор чекає 10 секунд після друку “Hello”, а потім друкує “World”.
Примітка: Читачі повинні виконати цю програму, щоб насправді зрозуміти роботу команди сну
Функція Usleep ()
Заголовок “unistd.h” надає ще одну функцію “usleep ()”, яка може призупинити виконання програми на певний проміжок часу. Робота схожа на вже описану функцію sleep ().
Прототип функції: int usleep (useconds_t useconds);
Параметри: useconds => Кількість мікросекунд, протягом яких призупинено виконання
Повернене значення:
0 => Usleep успішно повернувся.
-1 & errno => Помилка функції.
Опис:
Функція usleep () призупиняє виконання виклику потоку на секунди мікросекунд або до тих пір, поки сигнал не буде доставлений в потік, який перериває виконання.
Детальність значень таймера, що використовуються у функції usleep, може бути специфічною для реалізації. Якщо нам потрібна точніша деталізація, ніж та, що вказана реалізацією, тоді фактичне значення таймера округлюється до наступного підтримуваного значення.
Нижче наведено приклад для демонстрації функції usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Вихід:
Привіт Світ
Як показано у вищенаведеному висновку, ми визначаємо період часу як 10000 мікросекунд для функції usleep, і, як і попередня програма, що використовує функцію сну, ми друкуємо рядок “Hello World”.
Сон потоку (sleep_for & sleep_until)
C ++ 11 надає конкретні функції для переведення потоку в режим сну.
Є дві функції:
Std :: this_thread :: sleep_for
Прототип функції:
template void sleep_for( const std::chrono::duration& sleep_duration );
Параметри: sleep_duration => Тривалість сну
Повернене значення: жоден
Опис: Функція sleep_for () визначена в заголовку. Функція sleep_for () блокує виконання поточного потоку принаймні протягом зазначеного часу, тобто тривалості сну.
Ця функція може блокувати довше, ніж зазначений час, через планивання діяльності або затримки з обмеженням ресурсів.
Приклад C ++, що демонструє використання sleep_for, наведено нижче:
#include #include #include using namespace std; int main() { cout << 'Hello I'm waiting....' << endl; this_thread::sleep_for(chrono::milliseconds(20000) ); cout << 'Waited 20000 ms
'; }
Вихід:
Привіт, чекаю ...
Чекали 2000 мс
У наведеній вище програмі ми маємо вказану тривалість сну 20000 мілісекунд. Це означає, що потік буде блокуватися протягом 20000 мілісекунд перед відновленням роботи.
Std :: this_thread :: sleep_until
Прототип функції:
template void sleep_until( const std::chrono::time_point& sleep_time );
Параметри: sleep_time => Тривалість часу, до якої потік повинен бути заблокований.
Повернене значення: жоден
Опис: Ця функція визначена в заголовку. Функція sleep_until () блокує виконання потоку до тих пір, поки не сплине sleep_time. Як і інші функції, ця функція може також блокувати довше, ніж зазначений час, через планивання діяльності або затримки спору ресурсів.
Програма C ++ для функції sleep_until наведена нижче.
#include #include #include using namespace std; void current_time_point(chrono::system_clock::time_point timePt) { time_t timeStamp = chrono::system_clock::to_time_t(timePt); cout << std::ctime(&timeStamp) << endl; } void threadFunc() { cout<<'Current Time :: '; current_time_point(chrono::system_clock::now()); chrono::system_clock::time_point timePt = chrono::system_clock::now() + chrono::seconds(60); cout << 'Sleeping Until :: '; current_time_point(timePt); this_thread::sleep_until(timePt); cout<<'Woke up...Current Time :: '; current_time_point(chrono::system_clock::now()); } int main() { std::thread th(&threadFunc); th.join(); return 0; }
Вихід:
Поточний час :: 19 вересня, 12:52:01
Спати до :: 19 вересня, 12:53:01
Прокинувся ... Поточний час :: Thu Sep 19 12:53:01 2019
У цій програмі ми робимо нитку сплячою 60 секунд, тобто 1 хвилину. Після закінчення 1 хвилини; нитка прокидається і друкує поточний час.
Часті запитання
Q # 1) Що робить sleep () у C ++?
Відповідь: Функція Sleep () призупиняє виконання програми на певний проміжок часу. Цей період часу вказаний як аргумент функції sleep ().
Q # 2) Що таке файл заголовка для сну в C ++?
Відповідь: Заголовок режиму сну - “unistd.h” для операційної системи LINUX / UNIX та “Windows.h” для операційної системи Windows. Для сплячого потоку, який використовує функції «sleep_for» та «sleep_until», використовується заголовок.
Q # 3) Яка користь від #include Unistd H?
Відповідь: Заголовок «Unistd.h» - це заголовок, який визначає функцію sleep () для призупинення виконання програми.
Висновок
У цьому посібнику з функцією sleep () ми обговорили функцію sleep та usleep (), яка така ж, як функції sleep та thread sleep, sleep_for та sleep_until. Функції Sleep () та usleep () однакові, за винятком одиниці часу, яка використовується для вказівки часу сну.
У функції sleep () час вказується в секундах, тоді як у функції sleep () час вказується в мікросекундах. Функція потоку sleep_for () призупиняє виконання потоку на певний проміжок часу, вказаний як аргумент. Друга функція потоку sleep_until () призупиняє виконання потоку, поки не пройде заданий час.
Пропоноване читання = >> Що таке тестування ниток?
Повернення всіх обговорених функцій сну може зайняти більше часу, залежно від планування або інших затримок, пов’язаних із ресурсами.
=> Ознайомтесь з Популярною серією навчальних програм C ++ тут.
Рекомендована література
- Підручник з основних функцій Python з практичними прикладами
- Багатопотоковість на C ++ з прикладами
- 10 найкращих програм для вільного часу для відстеження часу співробітників
- Підручник QTP # 21 - Як зробити тести QTP модульними та багаторазовими, використовуючи бібліотеки дій та функцій
- Функції в C ++ з типами та прикладами
- Команди програм Unix Utilities: Which, Man, Find Su, Sudo (Частина D)
- Можливість сумісництва для експертів із селену
- 10 КРАЩИХ програм для відстеження часу для фрілансерів (2021 SELECTIVE)