5 Haziran 2020 Cuma

std::this_thread İsim Alanı

Giriş
Şu satır dahil edilir.
#include <thread>
Thread çalışırken kod kendi thread nesnesine erişebilir.

get_id metodu
std::thread::id tipindendir. get_id() ile dönen sayı Linux'ta suni bir sayıdır. Şöyle alırız.
auto myid = this_thread.get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();
sleep_for metodu - milisecond
Eskiden sleep metodu yoktu ve bu metod ile sıkıntı halloldu. Açıklaması şöyle
The function sleep is not in the standard C++
Bu metod usleep() ile aynı şey. Linux'ta şöyle yaparız
#include<unistd.h>
usleep(500000);
Örnek
Şöyle yaparız.
std::this_thread::sleep_for(std::chrono::milliseconds(100));
sleep_until metodu
Açıklaması şöyle. Eğer belirtilen süre geçmişte kaldıysa bloke olmaz.
Blocks the execution of the current thread until specified sleep_time has been reached.
5Hz'de periyodik olarak iş yapmak için şöyle yaparız.
#include <chrono>
#include <iostream>

int main()
{
  using clock = std::chrono::steady_clock;

  auto next_frame = clock::now();

  while(true)
  {
    next_frame += std::chrono::milliseconds(1000 / 5); // 5Hz

    // do stuff
    std::cout << std::time(0) << '\n'; // 5 for each second

    // wait for end of frame (avoiding spurious wake-up)
    while(clock::now() < next_frame)
      std::this_thread::sleep_until(next_frame);
  }
}



Hiç yorum yok:

Yorum Gönder