WĄTKI W LINUXIE

0

Witam

Funkcje równolegle sumuje wartości do zmiennej j co jeden i zwracają wartość j.
Niestety w tym czasie występuję błąd naruszenia pamięci.
Jestem chętny na wszystkie sugestie.

#include <iostream>
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
 
using namespace std;
 
void* fun(void *nr)
{
  int j = 0;
  for(int i = 0; i < 6000; ++i)
  {
      j += 1;
  }
  return (void *)j;
}
 
void* fun2(void *nr)
{
  int j = 0;
  for(int i = 0; i < 6000; ++i)
  {
      j += 1;
  }
  return (void *)j;
}
 
int main()
{
pthread_t w1, w2;
long wyn1, wyn2;
long wynik = 0; 
  pthread_join(w1, 0);
  wyn1 =(long) pthread_create(&w1, 0, fun, 0);
  pthread_join(w2, 0);
  wyn2 =(long) pthread_create(&w2, 0, fun2, 0);
  wynik = wyn1 + wyn2;
  cout << "Wynik zwrócony przez watki wynosi " << wynik << endl;
return 0;
}

Pozdrawiam
Adam

1
  wyn1 =(long) pthread_create(&w1, 0, fun, 0);
  wyn2 =(long) pthread_create(&w2, 0, fun2, 0);
  pthread_join(w1, 0);
  pthread_join(w2, 0);
0

Zastanawia mnie, gdzie tu równoległość i po co dwie identyczne funkcje (nawet nie mają statycznych zmiennych lokalnych, więc zupełnie powielanie nie ma sensu)?

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