Wątki w Linuxie.

0

Witam

Nie wiem jak z rzutować wartość zwracaną przez funkcje , aby można było zmienić wartość zmiennej znak.
Dziękuje za pomoc z góry.

 
#include <stdio.h>
#include <iostream>


void* znaczek(void* df)
{
char znakx = 'X';
void *zw = (void *)&znakx;
//char *zz = (char*)zw;
//std::cout << "zw :" << *zz <<  std::endl;
 
return *zw;
}

int main()
{
pthread_t wat1 , wat2;
char znak = 'w';
//void *wskNaVoid;


pthread_create(&wat1, NULL, &znaczek, NULL);
pthread_join(wat1, (void*) &znak);
printf("Dzialam bitch i moj znak to %c\n", znak);
  return 0;
}
0
void* znaczek(void* df)
  {
   static char znakx = 'X';
   return (void*)&znakx;
  }
0

Ale co i gdzie ma ci wątek zwrócić? Tak się tego nie robi. Lepiej stwórz funkcję i ją wywołuj z poziomu wątku np

#include <stdio.h>
#include <iostream>

pthread_mutex_t lock; 
 
void* znaczek(void* df)
{
char znakx = 'X';
void *zw = (void *)&znakx;
//char *zz = (char*)zw;
//std::cout << "zw :" << *zz <<  std::endl;
     pthread_mutex_lock(&lock);  //synchronizacja, w przypadku gdybyś używał wielu wątków
     jakas_funkcja( param );
     pthread_mutex_unlock(&lock);
}

void jakas_funkcja ( int param ) {
     //tu robisz obliczenia na tym co zwrocil watek
}
0

Wiem, że można zrobić przez funkcje lub zmienna globalna, która jest sterowana przez zamek.
Tylko chodzi oto że funkcja pthread_join(), w drugim nie pustym argumencie zostaje zapisana wartosc zwrócona przez wątek.

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