17. december 2001 - 14:09Der er
5 kommentarer og 1 løsning
Info om synkronisering af tråde i C++
Hejsa :).
Er en C++ newbie. Har programmeret en hel del i Java, men C++ er nyt for mig.
Er løbet ind i problemer vedrørende sylrnonisering af tråde i C++ - det skal vel gøres med kaldt til OS\'et. Jeg bruger Windows og Visual Studio 6.0, men vil såvidt muligt ikke bruge compiler-specifik kode.
Jeg har godt nok fået tråde op og køre, men det kniber med synkroniseringen. Til at starte med vil jeg bare have en simepl mutex, men vil også lave en monitor senere. har lige lånt en bog \"Object oriented multithreading using c++\", men har ikke fået fat på, lige hvordan man bruger mutexobjekter. Man laver et kald til oS\'et, som opretter et mutexobjekt virker det som. Men hvordan smider man dette objekt mellem forskellige tråde?
Hiv der er nogen som ved dette eller har links til mere information om tråde i C++, vil jeg sætte stor pris på det. Neklager min dansk: har boet i Sverige i mange år, så dank er ikke mit stærkeste sprog :).
Mutex objectet i windows ligner en såkaldt kritisk section, dvs. når du allokerer din mutex (som i sin tur styrer hvornår en process kan få adgang til f.eks. globale variable) så kan andre porcesser ikke tilgå den. Du skal så slippe den igen, når du er færdig vha. ReleaseMutex.
Princippet er:
get/wait for mutex; manipluate global var; release mutex;
Du skal have samme konstruktion i alle tråde. Den bedste måde at gøre det på, er ved at lave en ny klasse til formalået, og pakker mutex håndteringen ned i setter/getter rutinerne:
class globalMutex { private: int globalInt; mutex mutexName;
public: int getGlobalInt(void); void getGlobalInt(int v); };
Mange tak for det! Nu kan jeg komme videre :). C++ er en del anderledes end java, men indtil videre kan jeg godt lide alle de muligheder sproget tilbyder, men det virker som det kan gå lang tid før jeg bliver OK til sproget, heh :)
-- vonSanta
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.