কম্পিউটার

কিভাবে C++11 ব্যবহার করে টাইমার তৈরি করবেন?


এখানে আমরা দেখব কিভাবে C++ ব্যবহার করে টাইমার তৈরি করা যায়। এখানে আমরা পরে বলা একটি ক্লাস তৈরি করছি। এই শ্রেণীর নিম্নলিখিত বৈশিষ্ট্য আছে।

  • int (কোড চালানো পর্যন্ত অপেক্ষা করতে মিলিসেকেন্ড)
  • বুল (যদি এটি সত্য হয়, এটি অবিলম্বে ফিরে আসে এবং অন্য থ্রেডে নির্দিষ্ট সময়ের পরে কোডটি চালায়)
  • ভেরিয়েবল আর্গুমেন্ট (ঠিক আমরা std::bind এ ফিড করতে চাই)

নির্ভুলতা পরিবর্তন করতে আমরা chrono::milliseconds কে ন্যানোসেকেন্ড বা মাইক্রোসেকেন্ড ইত্যাদিতে পরিবর্তন করতে পারি।

উদাহরণ কোড

#include <functional>
#include <chrono>
#include <future>
#include <cstdio>
class later {
   public:
      template <class callable, class... arguments>
      later(int after, bool async, callable&& f, arguments&&... args){
      std::function<typename std::result_of<callable(arguments...)>::type()> task(std::bind(std::forward<callable>(f), std::forward<arguments>(args)...));
      if (async) {
         std::thread([after, task]() {
            std::this_thread::sleep_for(std::chrono::milliseconds(after));
            task();
         }).detach();
      } else {
         std::this_thread::sleep_for(std::chrono::milliseconds(after));
         task();
      }
   }
};
void test1(void) {
   return;
}
void test2(int a) {
   printf("result of test 2: %d\n", a);
   return;
}
int main() {
   later later_test1(3000, false, &test1);
   later later_test2(1000, false, &test2, 75);
   later later_test3(3000, false, &test2, 101);
}

আউটপুট

$ g++ test.cpp -lpthread
$ ./a.out
result of test 2: 75
result of test 2: 101
$

4 সেকেন্ড পরে প্রথম ফলাফল। প্রথমটি থেকে তিন সেকেন্ড পরে দ্বিতীয় ফলাফল


  1. JavaFX ব্যবহার করে কিভাবে একটি বৃত্ত তৈরি করবেন?

  2. JavaFX ব্যবহার করে কিভাবে একটি আর্ক তৈরি করবেন?

  3. মাইক্রোসফ্ট অ্যাক্সেস ব্যবহার করে কীভাবে একটি প্রতিবেদন তৈরি করবেন

  4. মাইক্রোসফ্ট প্রকাশক ব্যবহার করে কীভাবে একটি শংসাপত্র তৈরি করবেন