হ্যাঁ - পুরানো POSIX মানগুলি সংজ্ঞায়িত করা হয়েছে usleep()
, সুতরাং এটি লিনাক্সে উপলব্ধ:
int usleep(useconds_t usec);
বর্ণনা
ইউএসপ () ফাংশনটি (কমপক্ষে) ইউজেক মাইক্রোসেকেন্ডের জন্য কলিং থ্রেডের সম্পাদন স্থগিত করে। ঘুম কোনও সিস্টেমের ক্রিয়াকলাপের মাধ্যমে বা কল প্রক্রিয়াকরণে ব্যয় করা সময় বা সিস্টেম টাইমারগুলির গ্রানুলারিটির দ্বারা কিছুটা দীর্ঘ হতে পারে।
usleep()
মাইক্রোসেকেন্ড নেয় , সুতরাং আপনাকে মিলি সেকেন্ডে ঘুমাতে 1000 কে ইনপুটটি গুণতে হবে।
usleep()
এর পর থেকে পসিক্স থেকে অবহেলিত এবং পরে অপসারণ করা হয়েছে; নতুন কোডের জন্য, nanosleep()
অগ্রাধিকার দেওয়া হয়:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
বর্ণনা
nanosleep()
অন্তত নির্দিষ্ট সময় পর্যন্ত নির্দিষ্ট না হওয়া পর্যন্ত কলিং থ্রেডের সম্পাদন স্থগিত করে *req
অতিবাহিত না হওয়া বা কলিং থ্রেডে কোনও হ্যান্ডলারের ডাকে বা প্রক্রিয়াটি সমাপ্ত হওয়া সংকেত সরবরাহের ।
কাঠামোর টাইমস্পেক ন্যানোসেকেন্ড যথার্থতার সাথে সময়ের ব্যবধানগুলি নির্দিষ্ট করতে ব্যবহৃত হয়। এটা অনুসরণ হিসাবে সংজ্ঞায়িত করা হয়:
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
একটি সিগন্যাল দ্বারা বাধাগ্রস্ত হলে ঘুম চালিয়ে যাওয়া, msleep()
ব্যবহার করে একটি উদাহরণ ফাংশন প্রয়োগ করা nanosleep()
হয়:
#include <time.h>
#include <errno.h>
/* msleep(): Sleep for the requested number of milliseconds. */
int msleep(long msec)
{
struct timespec ts;
int res;
if (msec < 0)
{
errno = EINVAL;
return -1;
}
ts.tv_sec = msec / 1000;
ts.tv_nsec = (msec % 1000) * 1000000;
do {
res = nanosleep(&ts, &ts);
} while (res && errno == EINTR);
return res;
}
sleep(/*seconds*/)
মধ্যে<unistd.h>
কাজ, কিন্তু যদি আমি সঙ্গে ব্যবহারprintf("some things")
ছাড়া\n
, তার না কাজ করে।