0
請幫我把朋友。我只是想實現一個計時器事件功能。讓我正確地描述它。C++中的計時器刻度事件,Linux
在主函數中,將運行連續操作(假設在while(1)循環中打印)。
但是應該有另一個函數,它會在一段時間間隔(假設2秒)後重復調用。但是在主函數中執行的操作不應該受到阻礙。我想我必須在這裏實現線程。
這就像在視覺工作室蜱事件。
我想用C++ gcc或g ++編譯器。
請幫我把朋友。我只是想實現一個計時器事件功能。讓我正確地描述它。C++中的計時器刻度事件,Linux
在主函數中,將運行連續操作(假設在while(1)循環中打印)。
但是應該有另一個函數,它會在一段時間間隔(假設2秒)後重復調用。但是在主函數中執行的操作不應該受到阻礙。我想我必須在這裏實現線程。
這就像在視覺工作室蜱事件。
我想用C++ gcc或g ++編譯器。
您可以使用此代碼對自己跟蹤時間:
首先,一個輔助函數
double GetSeconds()
{
struct timeval Time;
gettimeofday(&Time, NULL);
int64_t T = Time.tv_usec + Time.tv_sec * 1000000;
return static_cast<double>(T)/1000000.0;
}
和主要的代碼使用它,這基本上是一個繁忙的循環:
const double EventTime = 2.0; // seconds
double StartTime = GetSeconds();
while (...)
{
double T = GetSeconds();
double DeltaTime = T-StartTime;
if (DeltaTime > EventTime)
{
FireEvent();
StartTime = T;
}
}
您可以在單獨的線程中運行此循環,也可以將其與while (1)
循環交錯使用。這是你的選擇。
在線程的情況下,你可以參考這個教程:Posix thread tutorial
其實這是我的錯,我已經給了同時的例子(1)。其實情況並不完全如此。程序的主要控制可以到達任何地方。它可以離開while循環,甚至可以去任何其他功能。該程序的控制可以在任何其他功能之間流通。 但是,定時器事件只會在2秒的時間間隔後重復觸發,它會給我一個通知,在2秒的時間間隔內被調用各種時間。 這就是我想要的。 – Ankur
@Ankur:然後把我的例子包裝在一個線程的主體中。 –
我對C++線程並不熟悉。我知道C#和Java線程,但不知道c + +線程 – Ankur