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

[C++] Wczytywanie wciskanych znaków osobnym wątku (konsola)

Ostatnio zmodyfikowano 2013-07-24 22:03
Autor Wiadomość
NHFL
Temat założony przez niniejszego użytkownika
[C++] Wczytywanie wciskanych znaków osobnym wątku (konsola)
» 2013-07-24 18:15:05
siema mam problem z wątkami tworzonymi w ten sposób "_beginthread(Watek, 0, NULL);" otóż pytanie
1) jak można zamknąć/zawiesić działanie takiego pierwszego wątku z poziomu drugiego wątku bo _endthread zamyka ten wątek którego się tyczy ten blok kodu gdzie znajduje się _endthread więc to odpada
2) mam problem z takim kodem a dokładniej to chyba z kbhit
C/C++
if( kbhit() )
     a = getch();

if( a == znak )
{
    //...
otóż tworze wątki dla tej samej funkcji więc kod jest identyczny problem jest taki ze gdy kbhit wyłapuje tylko jedną literkę z danego wątku załóżmy że mam 2 wątki. "znak" jest losowany w obydwu wątkach ale instrukcja if jest wykonywana tylko dla jednego wątku(oczywiście naciskając klawisz odpowiadający "znak"'owi") jesli próbuję nacisnąć literkę dla drugiego wątku to nie działa(czasem po kilkukrotnym nacisnieciu litery to wchodzi) a gdy mam więcej wątków to jest tak samo tylko ze szansa na wykonanie instrukcji if jest jeszcze mniejsza tak jakby kbhit działało tylko dla jednego wątku. Warto również wspomnieć że musze naciskać kilkakrotnie klawisz odpowiadający znakowi aby załapało czasem idzie za 1 razem czasem za 10-siątym czasem wcale tak jak pisalem wczesniej im więcej wątków tym mniejsza szansa ze załapie

PS: nieco namieszałem ale myślę że jesteście w stanie mi pomóc jakby coś było niejasnego to piszcie a wyjaśnie. Te wątki to wyższa szkoła jazdy dla mnie ;)
P-88680
DejaVu
» 2013-07-24 18:24:16
P-88682
pekfos
» 2013-07-24 18:28:35
załóżmy że mam 2 wątki. "znak" jest losowany w obydwu wątkach ale instrukcja if jest wykonywana tylko dla jednego wątku
Przyjmowanie danych wejściowych powinno być w jednym wątku. Dla wszystkich wątków dane pochodzą z jednego źródła. Gdy jeden wątek pobierze znak, drugi pobierze inny, albo w ogóle się zatrzyma.
P-88683
NHFL
Temat założony przez niniejszego użytkownika
» 2013-07-24 22:03:55
Dzięki pekfos naprawdę mi to pomogło w wielu sprawach a co do tych linków co zapodał dejavu to jak na razie kosmos dla mnie choć zdawałem mature z angielskiego ;)
żeby nie zakładać nowego tematu to mam pytanie znowu o wątki..
w wątkach mam zmienną lokalną y natomiast w głównym wątku main pętle for i chciałbym w warunku tej pętli wrzucić y != 22 znaczy sie gdy w którymś wątku y przybierze taką wartość to wychodzi z pętli jak tego dokonać??
ps:zmiana na zmienną globalną nic nie da bo sie program wali potrzebna lokalna dla każdego z wątków
lob
EDIT: trochę się pośpieszylem załatwilem ten problem przy pomocy zmiennej globalnej bool ;)
P-88707
« 1 »
  Strona 1 z 1