Wątki w systemie Linux

0

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;
} 
0

Tworzysz wskaźnik do struct number, ale pamięci nigdzie nie alokujesz. Usuń gwiazdkę przed ptr.

0

Działa! :) Wielkie dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1