Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Vicevlaknova aplikace pro hlidani vice vstupu najednou, nebo jine reseni

Ahoj,

jak se tak prokousávam postupně do Céčka narazil jsem na věc, kterou jsem nikdy předtím (kdysi dávno ve škole) nemusel řešit a to je hlídání více vstupů najednou.

Vezměme si situaci, kdy hlídám vstup z klávesnice a zároveň třeba seriový port.
Když nechám program čekat na string z klávesnice ( scanf() ), program stojí a logicky neobsluhuje seriový port. Když by mi na něj dorazila nějaká data, nevěděl bych o tom, dokud bych si nepřečetl vstupní buffer. To není úplně ideální situace.
Dovedu si představit řešení u mikrokontroleru, kde pomocí přerušení vyruším jeden proces, zpracuji příchozí data a proces nechám pokračovat v čekání. U PC netuším, jestli jsem schopen přijmat přerušení například při stisku klávesy.

Takže mě napadla dvě možná řešení:

1) nečekat na vstup z klávesnice, ale pouze v cyklech kontrolovat vstupní buffer a v případě, že se v něm něco objeví, tak to zpracovat

2) udělat aplikaci vícevláknovou, kde jedno vlákno obsluhuje uživatele a druhé hlídá seriový port.

Které řešení je častější, případně efektivnější?

Jak se takové věci řeší obecně? Jedno vlákno na GUI, jiné například na výpočetní engine a třetí například na obsluhu periferií?

Pokud jsou mé otázky naivní, tak mě prosím uveďte na pravou míru. Rovnou se přiznám, že netuším, jestli momentálně programuju v C nebo v C++, protože netbeans mi nabízejí jako možnost "C/C++ application" a gcc mi přeloží oboje. Takže nemám tušení, podle čeho bych to mohl poznat ;-).

Díky

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny