কম্পিউটার টিউটোরিয়াল

C++11 ব্যবহার করে টাইমার (Timer) তৈরি করার পদ্ধতি

এখানে আমরা C++ ব্যবহার করে টাইমার তৈরি করার পদ্ধতি দেখব। এখানে আমরা 'later' নামক একটি ক্লাস তৈরি করব। এই ক্লাসের নিচের প্রপার্টিগুলো রয়েছে:

  • int (মিলিসেকেন্ডে কতক্ষণ অপেক্ষা করবে কোড রান করার জন্য)
  • bool (যদি এটি true হয়, তবে তাৎক্ষণিক রিটার্ন করবে, এবং নির্দিষ্ট সময়ের পর অন্য থ্রেডে কোড রান করবে)
  • ভেরিয়েবল আর্গুমেন্টস (std::bind-এ যা খাওয়ানো হবে সেটি)

আমরা chrono::milliseconds কে nanoseconds বা microseconds এ পরিবর্তন করে প্রিসিশন (precision) কন্ট্রোল করতে পারি।

উদাহরণ কোড

#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
$

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

  1. জাভাFX-এ Circle (বৃত্ত) তৈরি করা

  2. জাভाएফএক্স-এ আর্ক (Arc) তৈরি করার পদ্ধতি

  3. মাইক্রোসফট অ্যাকসেস ব্যবহার করে রিপোর্ট তৈরি করার উপায়

  4. মাইক্রোসফট পাবলিশার দিয়ে সার্টিফিকেট তৈরি করার পদ্ধতি