Bazı nanosaniye için uyumak için bir destek iş parçacığı istiyorum. Aşağıdaki kod, hatasız derleyen bir örnektir. Ancak, beklendiği gibi çalışmıyor ve nedenini anlayamıyorum.Bazı nanosaniye için bir destek iş parçacığı uyuyor
#include <iostream>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time.hpp>
//Building options:
//-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -lboost_date_time-mt -lboost_thread-mt
void replay()
{
boost::posix_time::time_duration time1, time2;
time1=boost::posix_time::seconds(3);
std::cout << boost::posix_time::to_simple_string(time1) << std::endl;
boost::this_thread::sleep(time1);
time2=boost::posix_time::nanoseconds(987654321);
std::cout << boost::posix_time::to_simple_string(time2) << std::endl;
boost::this_thread::sleep(time2);
}
int main(int argc, char* argv[])
{
boost::thread replaythread(replay);
replaythread.join();
return 0;
}
BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG nanosaniye (more info) ile çalışmak için gerekli bir önişlemci tanımıdır. Sorunlar -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG yapı seçeneğini ayarladığımda oluşur, daha sonra destek :: this_thread :: uyku herhangi bir posix :: time_duration için çalışmaz. Oluşturulan iş parçacığı tüm CPU'yu kullanır ve uyumadığı gibi kalan talimatları da işlemez. Önişlemci tanımı kaldırılırsa, iş parçacığı :: posix_time :: nanosconds değilse, iş parçacığı herhangi bir süre için uyuyabilir. Program, nanosaniye saklamak için bazı time_duration değişkenlerini kullanır ve bu da şu şekilde desteklenir :: this_thread :: sleep çalışmıyor.
Eğer fonksiyonun dönüş değerini kontrol edin ve sıfır dönünceye kadar tekrar çağırmak zorunda kesilen zaman
sen çalışmıyor onunla ne anlama geliyor? Kısa mı yoksa uzun mu ya da hiç uyumuyor mu? Std :: cout çizgisinin nanosec ile çıktısı nedir? – Nobody
Haklısınız. Yayını daha iyi bir açıklama ile düzenledim. Teşekkür ederim. – Emer
Programı, destek için debuginformation ile bağlamaya ve uyurken neler olup bittiğine bakmaya çalıştınız mı? Benim için yoğun bir bekleyişe benziyor, çünkü nanosaniye için uyku için başka bir olasılık olmadığı için net. Belki beklemekte olan döngü hiçbir sebepten dolayı geri dönmez. – Nobody