Wątki w systemie Linux

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:

Kopiuj
#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;
} 
AL
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 3 lata
  • Postów:1493
0

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

0

Działa! :) Wielkie dzięki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.