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

Wspóldzielony obiekt struktury - wątki

Ostatnio zmodyfikowano 2017-07-28 15:57
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
Wspóldzielony obiekt struktury - wątki
» 2017-07-28 13:43:53
Cześć,

rozpocząłem pracę z wątkami, w sumie to co stworzyłem spełnia funkcjonalność (dzięki @pekfos za radę z wątkami :) ), jednak nie podoba mi się jedna rzecz, którą robię i nie wiem jak to rozwiązać, mianowicie chodzi mi o obiekt klasy, który ma być współdzielony. Czy zmienna musi być współdzielona "globalnie"? Jak to obejść?

Kod:

C/C++
struct Menu
{
    char opcjaA;
    char opcjaB;
};

Menu menu; // <------- Czy to musi być użyte globalnie (?) :D

void funkcja_A()
{
    //zmiana menu
}

void funkcja_B
{
    //praca na pliku, w zależności od parametru wybranego w funkcja_A
}

int main()
{
    boost::thread thread_one( boost::bind( & funkcja_A ) );
    boost::thread thread_second( boost::bind( & funkcja_B ) );
   
    thread_one.join();
    thread_second.join();
   
}

//EDIT:

Zrobiłem coś takiego:
C/C++
struct Menu
{
    static char opcja;
   
    char opcja_A;
    char opcja_B;
};

char Menu::opcja = 'a';

ale to także mi się nie podoba. Bo to takie oszukane podejście do zmiennej globalnej ;p Czyż nie ?

pracuję na booscie ze względu na kompilator :)
P-163653
j23
» 2017-07-28 15:40:12
A w parametrze przekazać nie możesz?
C/C++
void funkcja_A( Menu & m )
{
    m.opcjaA = 'A';
}

void funkcja_B( Menu & m )
{
    m.opcjaB = 'B';
}

int main( int argc, char ** argv )
{
    Menu m;
   
    thread t1( & funkcja_A, ref( m ) );
    thread t2( & funkcja_B, ref( m ) );
   
    t1.join();
    t2.join();
   
    return 0;
}
P-163658
Anim
Temat założony przez niniejszego użytkownika
» 2017-07-28 15:57:25
No właśnie powinienem ^^

Człowiek kombinuje, zamiast trzymać się sprawdzonych rozwiązać :) dziękuję @j23
P-163660
« 1 »
  Strona 1 z 1