আমাকে একটি ফাংশনে একাধিক যুক্তি পাস করতে হবে যা আমি একটি পৃথক থ্রেডে কল করতে চাই। আমি পড়েছি যে এটি করার সাধারণ উপায় হ'ল একটি স্ট্রাক্টকে সংজ্ঞায়িত করা, ফাংশনটিকে একটি পয়েন্টারটি পাস করা এবং আর্গুমেন্টগুলির জন্য এটির বিন্যাস করা। যাইহোক, আমি এটি কাজ করতে অক্ষম:
#include <stdio.h>
#include <pthread.h>
struct arg_struct {
int arg1;
int arg2;
};
void *print_the_arguments(void *arguments)
{
struct arg_struct *args = (struct arg_struct *)args;
printf("%d\n", args -> arg1);
printf("%d\n", args -> arg2);
pthread_exit(NULL);
return NULL;
}
int main()
{
pthread_t some_thread;
struct arg_struct args;
args.arg1 = 5;
args.arg2 = 7;
if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) {
printf("Uh-oh!\n");
return -1;
}
return pthread_join(some_thread, NULL); /* Wait until thread is finished */
}
এর জন্য আউটপুট হওয়া উচিত:
5
7
তবে আমি যখন এটি চালাই আমি আসলে পাই:
141921115
-1947974263
আমি কি ভুল করছি কেউ জানেন?