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

C-তে থ্রেড ব্যবহার করে 1 2 3 অসীমবার প্রিন্ট করা


এখানে, আমাদের থ্রেড ব্যবহার করে 1 2 3 সিকোয়েন্সটি অসীমবার রিপিট করে প্রিন্ট করতে হবে C প্রোগ্রামিং ল্যাঙ্গুয়েজে।

আমাদের চাওয়া স্যাম্পল আউটপুট দেখি,

1 2 3 1 2 3 1 2 3 1 2 3

এজন্য, আমাদের C প্রোগ্রামিং ল্যাঙ্গুয়েজে তিনটি থ্রেড ব্যবহার করতে হবে যা সাইড বাই সাইড রান করবে। এবং একটি ভেরিয়েবল থাকবে যা প্রথম থ্রেডে ১ দিয়ে ইনিশিয়ালাইজড থাকবে এবং এর মান এর লাস্ট ভ্যালু অনুযায়ী আপডেট হবে। এবং ফাংশনে একটি ইনফিনিট লুপ চালাব।

উদাহরণ

আমাদের সমাধান ইমপ্লিমেন্ট করার প্রোগ্রামটি দেখি,

#include <stdio.h>
#include <pthread.h>
pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
pthread_cond_t cond2 = PTHREAD_COND_INITIALIZER;
pthread_cond_t cond3 = PTHREAD_COND_INITIALIZER;
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int value = 1;
void *foo(void *n){
    while(1) {
        pthread_mutex_lock(&lock);
        if (value != (int)*(int*)n) {
            if ((int)*(int*)n == 1) {
                pthread_cond_wait(&cond1, &lock);
            } else if ((int)*(int*)n == 2) {
                pthread_cond_wait(&cond2, &lock);
            } else {
                pthread_cond_wait(&cond3, &lock);
            }
        }
        printf("%d ", *(int*)n);
        if (value == 3) {
            value = 1;
            pthread_cond_signal(&cond1);
        }
        else if(value == 1) {
            value = 2;
            pthread_cond_signal(&cond2);
        } else if (value == 2) {
            value = 3;
            pthread_cond_signal(&cond3);
        }
        pthread_mutex_unlock(&lock);
    }
    return NULL;
}
int main(){
    pthread_t tid1, tid2, tid3;
    int n1 = 1, n2 = 2, n3 = 3;
    pthread_create(&tid1, NULL, foo, (void *)&n1);
    pthread_create(&tid2, NULL, foo, (void *)&n2);
    pthread_create(&tid3, NULL, foo, (void *)&n3);
    while(1);
    return 0;
}

আউটপুট

1 2 3 1 2 3 1 2 3 1 2 3 1 2 3….

  1. জাভাস্ক্রিপ্ট ব্যবহার করে পেজ প্রিন্ট করার পদ্ধতি

  2. সি প্রোগ্রামিং-এ O(1) এক্সট্রা স্পেসে n×n স্পাইরাল ম্যাট্রিক্স প্রিন্ট করা

  3. পাইথনে Hello World প্রিন্ট করার উপায়

  4. awk কমান্ড শুরু করার গাইড