c sleep how use sleep function c programs
Bu C ++ Uyku öğreticisi, C ++ 'da Uyku İşlevini tartışacak ve bir iş parçacığının uykuya nasıl geçirileceğini görecek. Ayrıca diğer işlevler hakkında da bilgi edineceğiz. uyu:
Bir süreç, görev veya iş parçacığı olan herhangi bir bilgisayar programı 'uyuyabilir' veya belirli bir süre için etkin olmayan bir duruma geçebilir. Bu süre için infaz durdurulur. Yürütme, uyku zaman aralığı sona erdiğinde veya bir sinyal veya kesinti, yürütmenin devam etmesine neden olduğunda yeniden başlatılacaktır.
Bir programı (görev, süreç veya iş parçacığı) uyku moduna geçirmek için bir uyku sistemi çağrısı kullanırız. Tipik bir uyku sistemi çağrısı, programın ne kadar uykuya geçmesi veya devre dışı kalması gerektiğini belirten parametre olarak zamanı alır.
=> Tam C ++ Eğitim Serisini Buradan Kontrol Edin.
Ayrıca, bu öğreticide tartışacağımız usleep () ve thread :: sleep işlevlerine sahibiz. Sağlanan süre çoğunlukla milisaniye, mikrosaniye veya saniye cinsindendir ve buna bağlı olarak programı uyku moduna geçirebilecek çeşitli işlevlerimiz vardır.
Ne öğreneceksin:
- Uyku () İşlevi
- Usleep () Fonksiyonu
- İş Parçacığı Uyku (sleep_for & sleep_until)
- Sıkça Sorulan Sorular
- Sonuç
- Önerilen Kaynaklar
Uyku () İşlevi
C ++ dili kendi başına bir uyku işlevi sağlamaz. Ancak, işletim sisteminin aşağıdaki gibi özel dosyaları unistd.h Linux için ve Windows.h Windows için bu işlevi sağlar.
Linux veya UNIX işletim sistemini kullandığımızda, kullanmak için programımıza “unistd.h” başlık dosyasını eklememiz gerekir. uyku () işlevi.
Windows işletim sistemini kullanırken, uyku () işlevini kullanmak için “Windows.h” başlığını eklememiz gerekir. Dolayısıyla, bir çapraz platform programı yazmak için, aşağıdaki kodlara sahip olabiliriz, böylece başlıklardan herhangi biri kullanılacaktır.
#ifdef _WIN32 #include #else #include #endif
Uyku işlevi aşağıda açıklanmıştır:
İşlev prototipi:
işaretsiz uyku (işaretsiz saniye);
Parametreler:
saniye => Programın yürütülmesinin askıya alındığı saniye cinsinden süre
Geri dönüş değeri:
0 => İstenilen süre geçtikten sonra uyku geri gelirse.
Uyku bir sinyalle kesilirse, bir uyuşmazlık miktarı (istenen süre eksi geçen gerçek süre) döndürülür.
Açıklama:
Sleep () işlevi, çağrıldığı programın veya işlemin, işlev parametresi tarafından belirtilen saniye cinsinden bir süre boyunca çalışmasını geçici olarak askıya almasına neden olur. Yürütme, istenen süre geçene veya işleve bir sinyal veya bir kesinti iletilene kadar askıya alınır.
Bununla birlikte, sistem başka bir faaliyet planladıysa, askıya alma süresi daha uzun olabilir.
Aşağıda, iki cout ifadesi arasında uyku işlevini kullanan bir C ++ programı verilmiştir.
qa'da test planı nedir
#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; }
Çıktı:
Selam Dünya
Yukarıdaki programda “Merhaba” yazdırdıktan sonra 10 saniyelik bir süre ile uyku komutu veriyoruz. Derleyici 'Merhaba' yazdıktan sonra 10 saniye bekler ve ardından 'Dünya' yazdırır.
Not: Okuyucular, uyku komutunun çalışmasını gerçekten anlamak için bu programı çalıştırmalıdır.
Usleep () Fonksiyonu
'Unistd.h' başlığı, bir programın yürütülmesini belirli bir süre boyunca askıya alabilen başka bir 'usleep ()' işlevi sağlar. Çalışma, daha önce açıklanan uyku () işlevine benzer.
İşlev prototipi: int usleep (useconds_t useconds);
Parametreler: useconds => Yürütmenin askıya alındığı mikro saniye sayısı
Geri dönüş değeri:
0 => Usleep başarıyla geri döndü.
-1 & errno => İşlev başarısız oldu.
Açıklama:
Usleep () işlevi, kullanım saniyesinin mikro saniyeleri için veya sinyal, yürütmeyi kesintiye uğratan iş parçacığına iletilene kadar evre çağırma işlemini askıya alır.
Usleep fonksiyonunda kullanılan zamanlayıcı değerlerinin granülerliği uygulamaya özel olabilir. Uygulama tarafından belirtilenden daha ince ayrıntıya ihtiyacımız varsa, gerçek zamanlayıcı değeri bir sonraki desteklenen değere yuvarlanır.
Aşağıda, usleep () işlevini gösteren bir örnek verilmiştir.
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Çıktı:
Selam Dünya
Yukarıdaki çıktıda gösterildiği gibi usleep fonksiyonu için süreyi 10000 mikrosaniye olarak belirledik ve uyku fonksiyonunu kullanan önceki programda olduğu gibi “Merhaba Dünya” dizesini yazdırıyoruz.
İş Parçacığı Uyku (sleep_for & sleep_until)
C ++ 11, bir iş parçacığını uyku moduna geçirmek için belirli işlevler sağlar.
İki işlevi vardır:
Std :: this_thread :: sleep_for
İşlev prototipi:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametreler: sleep_duration => Uykuya kadar geçen süre
Geri dönüş değeri: Yok
Açıklama: Sleep_for () işlevi başlıkta tanımlanmıştır. Sleep_for () işlevi, geçerli evrenin yürütülmesini en azından belirtilen süre boyunca, yani uyku_süresi için engeller.
Bu işlev, zamanlama etkinlikleri veya kaynak çekişme gecikmeleri nedeniyle belirtilen süreden daha uzun bir süre bloke edebilir.
Aşağıda sleep_for kullanımını gösteren bir C ++ örneği verilmiştir:
#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
'; }
Çıktı:
Merhaba bekliyorum….
2000 ms bekledi
Yukarıdaki programda 20000 milisaniyelik belirli bir uyku süremiz var. Bu, iş parçacığının işleme devam etmeden önce 20000 milisaniye boyunca bloke edeceği anlamına gelir.
Std :: this_thread :: sleep_until
İşlev prototipi:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametreler: sleep_time => İş parçacığının engelleneceği süre.
Geri dönüş değeri: Yok
Açıklama: Bu işlev başlıkta tanımlanmıştır. Sleep_until () işlevi, uyku_süresi geçene kadar bir evrenin yürütülmesini engeller. Diğer işlevler gibi, bu işlev de zamanlama etkinlikleri veya kaynak çekişme gecikmeleri nedeniyle belirli bir süreden daha uzun süre bloke edebilir.
Aşağıda sleep_until işlevi için bir C ++ programı verilmiştir.
#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; }
Çıktı:
Geçerli Saat :: Per 19 Eyl 12:52:01 2019
Uyuma Süresi :: Per 19 Eyl 12:53:01 2019
Uyandım… Şimdiki Zaman :: 19 Eyl 12:53:01 2019
Bu programda ipliği 60 saniye yani 1 dakika uyutuyoruz. 1 dakika tamamlandığında; iplik uyanır ve geçerli saati yazdırır.
Sıkça Sorulan Sorular
S # 1) C ++ 'da sleep () ne yapar?
Cevap: Sleep () işlevi, programın yürütülmesini belirli bir süre askıya alır. Bu süre, sleep () işlevine bir bağımsız değişken olarak belirtilir.
S # 2) C ++ 'da uyku için başlık dosyası nedir?
Cevap: Uyku başlığı, LINUX / UNIX İşletim sistemi için 'unistd.h' ve Windows İşletim sistemi için 'Windows.h' dir. 'Sleep_for' ve 'sleep_until' işlevlerini kullanan iş parçacığı uykusu için başlık kullanılır.
S # 3) #include Unistd H'nin kullanımı nedir?
Cevap: 'Unistd.h' başlığı, programın yürütülmesini askıya almak için sleep () işlevini tanımlayan başlıktır.
Sonuç
Sleep () işlevi için bu öğreticide, uyku işlevini ve uyku ve iş parçacığı uyku işlevleri, sleep_for ve sleep_until ile aynı olan usleep () işlevini tartıştık. Uyku () ve usleep () işlevleri, uyku zamanını belirtmek için kullanılan zaman birimi dışında aynıdır.
Sleep () işlevinde, zaman saniye cinsinden belirtilirken, usleep () işlevinde zaman mikrosaniye cinsinden belirtilir. Evre fonksiyonları sleep_for () bir argüman olarak sağlanan belirli bir süre boyunca evre yürütmeyi askıya alır. İkinci iş parçacığı işlevi sleep_until (), belirli bir süre geçene kadar evrenin yürütülmesini askıya alır.
Önerilen okuma = >> Konu Testi nedir?
Tartışılan tüm uyku işlevlerinin, programlamaya veya diğer kaynağa özgü gecikmelere bağlı olarak geri dönmesi daha uzun sürebilir.
=> Popüler C ++ Eğitim Serisini Buradan Okuyun.
Önerilen Kaynaklar
- Uygulamalı Örneklerle Python Ana İşlev Eğitimi
- Örneklerle C ++ 'da Çoklu Okuma
- Çalışan Zaman Takibi İçin En İyi 10 Ücretsiz Zaman Saati Yazılımı
- QTP Eğitimi # 21 - Eylemler ve Fonksiyon Kitaplıklarını Kullanarak QTP Testlerini Modüler ve Yeniden Kullanılabilir Yapma
- Türler ve Örneklerle C ++ 'da İşlevler
- Unix Utilities Program Komutları: Hang, Man, Find Su, Sudo (Bölüm D)
- Selenium Uzmanları için Yarı Zamanlı Serbest Çalışma Fırsatı
- Serbest Çalışanlar için EN İYİ 10 Zaman İzleme Uygulaması (2021 SEÇİCİ)