Cześć, moim zadaniem jest napisać program wielowątkowy uruchamiany pod Linuxem. W utworzonym wątku mam wykonywać funkcję, która sobie coś tam liczy. Problem w tym, że tworząc wątek za pomocą funkcji pthread_create nie mogę przekazać bezpośrednio argumentów. Stworzyłem więc strukturę i wskaźnik do niej. Ten wskaźnik przekazuję jako parametr pthread_create aby funkcja w wątku mogła działać na tych argumentach. I teraz jak chcę odwołać się do tych zmiennych poprzez ten wskaźnik to w konsoli dostaje "Naruszenie ochrony pamięci".
Podpowie ktoś jak to rozgryźć? A może istnieje jakiś lepszy sposób przekazania parametrów wątkowi?
Kod:
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
struct numbers {
int n;
int k;
}*ptr;
void *funkcja1(void *arg) {
struct numbers *abc = arg;
a = abc->n;
printf("%d", a);
}
int main() {
ptr->n = 6;
ptr->k = 3;
pthread_t thread[1];
if (pthread_create(&thread[0], NULL, &funkcja1, &ptr) != 0) {
printf("error\n");
}
printf("Hello\n");
pthread_join (thread[0], NULL);
return 0;
}