Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźnik na wiele wątków

Ostatnio zmodyfikowano 2015-05-24 15:48
Autor Wiadomość
wiktor12348
Temat założony przez niniejszego użytkownika
Wskaźnik na wiele wątków
» 2015-05-23 12:46:57
Witam,

Posiadam strukturę:

C/C++
struct arg {
    char * buff;
    int size;
    char * hash;
    int * licznik;
};

Przekazuje to do każdego wątku, ale wcześniej tworze zmienną "licznik", i przekazuje adres do każdego licznika w tej strukturze:

C/C++
int licznik = 0;
/*stworzona tablica struktur*/
/*...*/
argument[ i ].licznik = & licznik;
 
Chodzi generalnie o to by każdy wątek mógł inkrementować licznik będący w mainie.

C/C++
printf( "1 :%d \n", & licznik );
argument[ i ].licznik = & licznik;
printf( "2 :%d \n", &( argument[ i ].licznik ) );
Zwraca różne adresy.

Pewnie źle rozumiem coś z podstaw lub źle zapisuje. Ktoś mnie może poprawić?
P-132658
Monika90
» 2015-05-23 14:11:29
Nie rozumiesz podstaw, a zabierasz się za wątki. Powinno być
C/C++
printf( "1 :%p\n", & licznik );
argument[ i ].licznik = & licznik;
printf( "2 :%p\n", argument[ i ].licznik );


Chodzi generalnie o to by każdy wątek mógł inkrementować licznik będący w mainie.
Wątki nie mogą inkrementować tego samego licznika bez synchronizacji.
P-132661
wiktor12348
Temat założony przez niniejszego użytkownika
» 2015-05-23 23:08:10
Nie rozumiesz podstaw, a zabierasz się za wątki. Powinno być
Jak widać nie zrozumiałaś przekazu :-) Tak mam pewne braki oraz brak doświadczenia w c/c++. Gdybym nie miał problemów - nie szukałbym pomocy. Często sam rozwiązuje takie zagwozdki ale czasem lepiej spytać od razy dowiem się że robię milion rzeczy źle.

Ten zapis co poprawiłaś to akurat najmniej ważny jest. Chociaż tam też był błąd. Dzięki.

Wcześniej używałem danych statycznych w funkcjach, tam nie potrzebowałem synchronizacji. Myślałem że też ominę to używają adresu komórki, ale jak widać pomyliłem się znowu.
P-132680
DejaVu
» 2015-05-24 10:52:14
Jak widać nie zrozumiałaś przekazu :-)
No właśnie to Ty nie zrozumiałeś przekazu. Najpierw trzeba znać podstawy, a dopiero potem robić cokolwiek z wielowątkowością.
P-132689
wiktor12348
Temat założony przez niniejszego użytkownika
» 2015-05-24 15:48:07
No właśnie to Ty nie zrozumiałeś przekazu. Najpierw trzeba znać podstawy, a dopiero potem robić cokolwiek z wielowątkowością.

Nie wiem co to wnosi do tematu, ale ja doskonale wiem że mam braki, notabene nie tylko ja. Prace na wątkach wymuszono na mnie. Generalnie nie rozumiem, poruszenia i problemu jaki wynika z tej rozmowy :-) Uczę się, popełniam błędy, rozwiązuje problemu lub szukam pomocy/wskazówek. W dodatku jestem intelektualnym gamoniem. Wskaźnik był dobrze użyty ale później zwracał śmieci. Zresztą nie ważne.

Dziękuje za pomoc. Życzę miłej niedzieli, chociaż tak mało jej zostało :-)
P-132702
« 1 »
  Strona 1 z 1